2016年12月12日星期一

spring boot注入静态变量

private static String test;

@Value("${test}")
public void setXxx(String test) {
  Test.test = test;
}

遇到一个问题,如果这个static变量是要传给Test类的super方法调用:
public Test() {
  super(test);
}
执行顺序是先调用构造方法,后调用set方法,不能满足需求。

解决方法1:
public Test(@Value("${test}") String test) {
  super(test);
}

解决方法2:
把super父类中的用到test变量逻辑抽成了protected方法loadTest(test),在子类中调用,不再通过super传参调用:
public Test() {
  super();
}

@PostConstruct
public void init() {
  loadTest(test);
}

没有评论:

发表评论