如果我们通过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>
答案 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中设置消息”,而不是。