You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot项目中@Value注入application.properties配置不生效导致dataSource创建失败

问题根因

你遇到的空指针异常是因为dataSource方法执行时,类上用@Value注入的四个属性全为null,传给Hikari配置时触发空指针。之所以@Value没注入成功,是你混用了三种数据源配置方式(@Value注入、@ConfigurationProperties绑定、方法入参DataSourceProperties),导致Bean初始化顺序异常,@Value还没完成注入就执行了Bean创建方法。

修复方案

方案1(推荐):删除冗余配置,用@ConfigurationProperties自动绑定

SpringBoot的@ConfigurationProperties会自动把spring.datasource前缀的配置项绑定到DataSource对象,不需要手动注入属性,修改配置类如下:

@Configuration
public class SpringConfiguration {

    @Bean("dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .type(HikariDataSource.class)
                .build();
    }

    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }
}

方案2:保留@Value的修复步骤

如果你一定要用@Value注入属性,按下面步骤修改:

  1. 删除dataSource方法上的@ConfigurationProperties注解,删除方法入参的DataSourceProperties参数,避免配置方式冲突
  2. 确认启动类放在com.ty包或父包下,如果启动类不在这个路径,需要在启动类上加@ComponentScan(basePackages = "com.ty")确保配置类被扫描到
  3. 确认application.properties放在src/main/resources目录下,maven打包时没有被过滤掉
其他需要修正的问题
  1. pom文件中MyBatis版本过低:你当前使用的mybatis-spring:1.2.3、mybatis:3.3.0适配的是Spring4.x版本,和SpringBoot 2.5.1使用的Spring5.x版本不兼容,建议升级到:
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.1.1</version>
</dependency>
  1. application.properties中MongoDB配置错误:spring.data.mongodb.uri的值里是localhost:27017,你当前写的是localhost.27017,点要改成冒号。

内容的提问来源于stack exchange,提问作者climy007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 10:15:03