加载Springbean时,如果我有一个构造函数和setters,那么首先调用哪个构造函数和setters?

加载Springbean时,如果我有一个构造函数和setters,那么首先调用哪个构造函数和setters?,spring,Spring,这是一个基本的问题——什么时候加载Springbean,如果我有一个构造函数和setter,那么首先调用哪个构造函数和setter 谢谢难道不需要先调用构造函数吗?setter是实例方法,因此在对象实例化之前无法调用。我认为Spring不能保证setter的调用顺序。无论设置程序的调用顺序如何,让bean工作都将是一个很好的实践。如果您想在调用所有setter之后进行一些处理,您可能会发现使用。或者,如果您使用的是XML配置而不是注释,则可能更合适。在调用任何setter方法之前,必须调用构造函

这是一个基本的问题——什么时候加载Springbean,如果我有一个构造函数和setter,那么首先调用哪个构造函数和setter


谢谢

难道不需要先调用构造函数吗?setter是实例方法,因此在对象实例化之前无法调用。

我认为Spring不能保证setter的调用顺序。无论设置程序的调用顺序如何,让bean工作都将是一个很好的实践。如果您想在调用所有setter之后进行一些处理,您可能会发现使用。或者,如果您使用的是XML配置而不是注释,则可能更合适。

在调用任何setter方法之前,必须调用构造函数。使用
init方法
告诉Spring在调用setter后调用一些逻辑:

<bean class="my.CoolClass" init-method="startup">
    <constructor-arg value="Foo" />
    <property name="bar" value="baz" />
</bean>

我在调试器中编写了简单的XML配置和Spring源代码

似乎在Spring3.x中,可以在XMLbean定义中组合构造函数arg属性(在
AbstractAutowireCapableBeanFactory.java
中选中doCreateBean,它调用createBeanInstance-constructor和populateBeannext-setters)

另见