【问题标题】:Setting order of injection values from properties in Spring Boot for @Value在 Spring Boot 中为 @Value 设置注入值的顺序
【发布时间】:2019-04-30 04:24:12
【问题描述】:

我有一个问题,关于设置@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
    }
}

【问题讨论】:

    标签: spring-boot properties annotations inject


    【解决方案1】:

    看来你有两个全局变量如

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-22
        • 2020-10-04
        • 1970-01-01
        • 2017-11-03
        • 2021-06-30
        • 2021-01-13
        • 1970-01-01
        相关资源
        最近更新 更多