@Value Annotation不从属性文件中注入值

时间:2011-09-15 05:26:59

标签: java spring constructor properties annotations

我正在使用@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块中,我会收到编译错误。

2 个答案:

答案 0 :(得分:3)

当对象未完成构造时(即,对象构造函数仍然没有被完成),我们如何确保对象的成员真正准备好了?在构造函数完成之后,Spring似乎不会注入该值。

答案 1 :(得分:3)

nicholas.hauschild是对的。在构造对象之后,@Value将被注入。如果你想在构造bean之后进行一些初始化,那么你应该实现IntializingBean