从 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");
}