springboot @value取值为空,用Environment才可以

springboot @value取值为空,用Environment才可以

问题描述:

在配置数据源的时候,读取配置文件中的值,用@value读不到,用Environment(也是实现了EnvironmentAware才可以的)才能获取。而另一配置类去能用@value获取值,我表示很懵逼,求指导。
dbconfig.properties:
DBConfiguration.java
图片说明图片说明

@PropertySource()和@Configuration可能会出现重复加载而冲突的情况

这个应该是env和@Value的初始化的时间不一致造成的,我觉得你应该想要的是这种配置效果

 @Component
@ConfigurationProperties(prefix = "datasources")
public class DbConfigProperties {
    private String password;
    private String username;
    private String url;
    private String driverClassName;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }
}

application.properties中的配置

 datasources.url=
datasources.password=
datasources.username=
datasources.driver-class-name=

图片说明

以上三张图,自己看