从Spring Boot中的属性为@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
}
}

如果某些内容有效,则可以使用Environment类来获取值。例如:

@Autowired
private Environment env;  
@Value("${first}")
public void setFirst(boolean first) {
FIRST = first;
if (FIRST) 
SECOND = env.getProperty("second");
}

似乎有两个全局变量,如

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
}
}

最新更新