我正面临这个问题:我有一个类,其中@Value变量声明为静态,如图所示。当我的应用程序启动对此类方法的@PostConstruct执行访问时,找到具有空值的变量。
如果我在执行@PostConstruct之后调用此类,则可以看到@Value静态变量不为null,并且具有正确的值。
如何在@PostConstruct执行中获取具有实际值的变量?
这是我的代码:
@Component
public class ValidacionesUtils {
public static String variable;
@Value("${access.to.my.variable}")
public void setVariable(String variable) {
this.variable = variable;
}
@PostConstruct
private void init() {
if (variable==null) {
log.error("This is what my application prints");
} else {
log.error("This is not printed");
}
}
}
答案 0 :(得分:0)
为什么要声明它是公共的和静态的?
尝试做
@Value("${access.to.my.variable}")
private String variable;
这种方式应该可以在@PostConstruct中使用