从 Spring Boot for @Value 中的属性设置注入值的顺序
Setting order of injection values from properties in Spring Boot for @Value
我有一个关于设置注入 @Value 注释的顺序的问题。我尝试使用@Order,但对于这种情况,它不起作用。
我为什么要问这个?因为某些值依赖于其他值。我可以在@PostConstructor 中创建更多逻辑,但如果存在任何控制顺序的解决方案,它将对我有所帮助。
为了澄清,一个不起作用的例子:
@Value("${first}")
@Order(1)
public void setFirst(boolean first) {
FIRST = first;
}
@Value("${second}")
@Order(2)
public void setSecond(String second) {
SECOND = second;
if(first){
//do something
}
}
看来你有两个全局变量如
private boolean FIRST;
private String SECOND;
那么你可以这样实现:
@Value("${first}")
public void setFirst(boolean first) {
FIRST = first;
}
@Value("${second}")
public void setSecond(String second) {
SECOND = second;
if(FIRST){
//do something
}
}
您可以使用环境 class 来获取有效值。例如:
@Autowired
private Environment env;
@Value("${first}")
public void setFirst(boolean first) {
FIRST = first;
if (FIRST)
SECOND = env.getProperty("second");
}
我有一个关于设置注入 @Value 注释的顺序的问题。我尝试使用@Order,但对于这种情况,它不起作用。 我为什么要问这个?因为某些值依赖于其他值。我可以在@PostConstructor 中创建更多逻辑,但如果存在任何控制顺序的解决方案,它将对我有所帮助。
为了澄清,一个不起作用的例子:
@Value("${first}")
@Order(1)
public void setFirst(boolean first) {
FIRST = first;
}
@Value("${second}")
@Order(2)
public void setSecond(String second) {
SECOND = second;
if(first){
//do something
}
}
看来你有两个全局变量如
private boolean FIRST;
private String SECOND;
那么你可以这样实现:
@Value("${first}")
public void setFirst(boolean first) {
FIRST = first;
}
@Value("${second}")
public void setSecond(String second) {
SECOND = second;
if(FIRST){
//do something
}
}
您可以使用环境 class 来获取有效值。例如:
@Autowired
private Environment env;
@Value("${first}")
public void setFirst(boolean first) {
FIRST = first;
if (FIRST)
SECOND = env.getProperty("second");
}