我的spring-boot项目中有一个属性类。
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1;
private String property2;
// getter/setter
}
现在,我想将默认值设置为property1
的application.properties文件中的其他属性。类似于以下示例使用@Value
@Value("${myprefix.property1:${somepropety}}")
private String property1;
我知道我们可以像下面的示例一样分配静态值,其中"默认值"被指定为property
的默认值,
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
private String property1 = "default value"; // if it's static value
private String property2;
// getter/setter
}
如何在spring boot中使用@ConfigurationProperties类(而不是类型安全配置属性)执行此操作,其中我的默认值是另一个属性?
答案 0 :(得分:8)
检查是否在MyProperties类中使用@PostContruct设置了property1。如果它不是你可以将它分配给另一个属性。
@PostConstruct
public void init() {
if(property1==null) {
property1 = //whatever you want
}
}
答案 1 :(得分:5)
在spring-boot 1.5.10(可能更早)中,设置默认值按照建议的方式工作。例如:
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
@Value("${spring.application.name}")
protected String appName;
}
@Value
默认值仅在未在您自己的属性文件中覆盖时使用。