0

如果我们通过 spring 注入一个变量值并在类本身中初始化它,那么将选择什么,为什么?例如

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>
4

1 回答 1

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 中设置的消息”,而不是。

于 2013-05-30T20:02:25.003 回答