springboot @value取值为空,用Environment才可以
问题描述:
在配置数据源的时候,读取配置文件中的值,用@value读不到,用Environment(也是实现了EnvironmentAware才可以的)才能获取。而另一配置类去能用@value获取值,我表示很懵逼,求指导。
答
@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=