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

Spring Boot中@Value读取application.properties值返回null的解决方法

解决@Value读取配置返回null的问题

嘿,我看到你用@Value读取配置时遇到了全null的问题,咱们一步步来排查和解决:

核心问题排查与修复步骤:

  1. 配置文件名不匹配
    Spring Boot默认只会自动加载application.properties文件,你的配置文件叫app.properties,这会导致Spring根本没读到这些配置。要么把文件名改成application.properties,要么在启动类中通过@PropertySource注解指定加载这个自定义配置文件(比如@PropertySource("classpath:app.properties"))。

  2. 配置键名的空格问题
    你的配置文件里键名和值之间有空格,比如JDBC_DRIVER =com.mysql.cj.jdbc.Driver,这里JDBC_DRIVER后面的空格会被Spring当成键名的一部分,实际键名变成了JDBC_DRIVER (带末尾空格),但你@Value里写的是${JDBC_DRIVER},自然匹配不到。必须把等号两边的空格去掉,修正后的配置如下:

    JDBC_DRIVER=com.mysql.cj.jdbc.Driver
    DB_URL=jdbc:mysql://127.0.0.1:3306/vetobooks?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    USER=root
    PASS=a
    
  3. 变量名拼写错误
    你的JDBCMysql类里,@Value("${JDBC_DRIVER}")对应的变量是public String JDBC_DRIVE;——少了一个字母R!应该改成JDBC_DRIVER,否则即使配置读对了,变量也接收不到值。

  4. 未触发方法调用
    你的主类里只是获取了JDBCMysql的Bean,但没有调用loadValue()方法,所以即使配置读取成功,你也看不到输出。需要在getBean之后调用这个方法:

    JDBCMysql jdbcMysql = context.getBean(JDBCMysql.class);
    jdbcMysql.loadValue();
    

修正后的完整代码示例:

1. 正确的application.properties

JDBC_DRIVER=com.mysql.cj.jdbc.Driver
DB_URL=jdbc:mysql://127.0.0.1:3306/vetobooks?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
USER=root
PASS=a

2. 修正后的JDBCMysql类

package com.example.java_spring_java_example;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class JDBCMysql {
    @Value("${JDBC_DRIVER}")
    public String JDBC_DRIVER; // 修正拼写错误
    @Value("${USER}")
    public String USER;
    @Value("${PASS}")
    public String PASS;
    @Value("${DB_URL}")
    public String DB_URL;

    public void loadValue() {
        System.out.println(DB_URL + "-" + USER + "-" + PASS + "...");
    }
}

3. 修正后的主类

package com.example.java_spring_java_example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class main {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(main.class, args);
        JDBCMysql jdbcBean = context.getBean(JDBCMysql.class);
        jdbcBean.loadValue(); // 调用方法输出配置值
    }
}

按照这些步骤修改后,你应该就能正确读取到配置值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:42:50