我正在使用@Value
注释来获取属性&它在Normal方法中成功发生但在Class构造函数中没有成功。任何人都可以说出原因可能是什么?
Class A {
@Value("#{columnProperties['Users.Columns']}")
String columnNames;
A()
{
System.out.println("In Constructor="+columnNames);
}
void show()
{
System.out.println("In Method="+columnNames);
}
}
当我做的时候
A obj=new A();
我得到了输出
在Constructor中= null
和obj.show()
给出了
在方法= A,B,C
中
(这意味着期望的结果)
我希望在调用构造函数时立即设置值。如果我将String声明放在static或initialize块中,我会收到编译错误。
答案 0 :(得分:3)
当对象未完成构造时(即,对象构造函数仍然没有被完成),我们如何确保对象的成员真正准备好了?在构造函数完成之后,Spring似乎不会注入该值。
答案 1 :(得分:3)
nicholas.hauschild是对的。在构造对象之后,@Value
将被注入。如果你想在构造bean之后进行一些初始化,那么你应该实现IntializingBean。