Spring XML与Java类中的变量初始化

时间:2013-05-30 19:59:47

标签: java spring

如果我们通过spring注入一个变量值并在类本身中初始化那么那么将会选择什么?为什么? E.g。

public class Test {
     String message;

     public String getMessage() {
      return message;
     }

     public void setMessage(String message) {
      this.message = message;
     }
 }

Springcontext.xml

  <bean id="test" class="com.testpac.Test" 
      <property name="message" value="i am message text" />
  </bean>

1 个答案:

答案 0 :(得分:3)

Spring首先调用构造函数,然后在构造的实例上调用setter方法。

如果您的意思是在声明变量的初始化中或在构造函数中设置值,则Spring设置值将优先。

如果你的意思是在从Spring获取bean之后调用setter,那将覆盖Spring设置的内容。

前者是这样的代码:

public class Test {
     String message = "Initialized value in code";

     public String getMessage() {
      return message;
     }

     public void setMessage(String message) {
      this.message = message;
     }
 }

价值将是Spring设定的价值。在你的例子中,“我是消息文本”。

在后一种情况下,它看起来像这样:

Test bean = (Test) appCtx.getBean("test");
bean.setMessage("message set in loaded bean");

然后,值是“在加载的bean中设置消息”,而不是。