【问题标题】:How to inject system property into static bean in configuration?如何在配置中将系统属性注入静态 bean?
【发布时间】:2014-08-07 11:07:27
【问题描述】:

在我的 Spring @Configuration 类中,我希望将系统属性 ${brand} 注入一个名为 brandString 的静态 String bean。我已经使用@PostConstruct 此处描述的解决方法成功地做到了这一点https://stackoverflow.com/a/19622075/1019830 并为静态字段分配通过@Value 注入的实例字段值:

@Configuration
public class AppConfig {

  @Value("${brand}")
  private String brand;
  private static String brandString;

  @PostConstruct
  public void init() {
    brandString = brand;
  }

  @Bean
  public static String brandString() {
    return brandString;
  }

  // public static PropertyPlaceHolderConfigurer propertyPlaceHolderConfigurer() {...}

是否有另一种方法将${brand} 的值静态注入brandString 字段,而不使用另一个“复制”brand@PostConstruct 方法?

【问题讨论】:

    标签: java spring dependency-injection static-initialization


    【解决方案1】:

    试试这个:

    @Configuration
    public class AppConfig {
    
        private static String brand;
    
        @Value("${brand}")
        public void setBrand(String brand) {
            AppConfig.brand = brand;
        }
    
        @Bean
        public static String brandString() {
            return brand;
        }
    ...
    }
    

    【讨论】:

    • 太棒了!在 setter 方法上设置 @Value 注释,这真的是如何工作的?
    • 你是如何为@Bean 方法选择方法名的??
    猜你喜欢
    • 2013-09-16
    • 2010-09-23
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2011-12-02
    • 2011-09-09
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多