代码之家  ›  专栏  ›  技术社区  ›  harshit

当加载spring bean时,如果我有一个构造函数和setter,那么首先调用哪个呢?

  •  5
  • harshit  · 技术社区  · 15 年前

    这是一个基本的问题——何时加载SpringBean,如果我有一个构造函数和setter,首先调用哪一个?

    谢谢

    4 回复  |  直到 11 年前
        1
  •  10
  •   oxbow_lakes    15 年前

    建造师 必须 在调用任何setter方法之前调用。使用 init-method 告诉spring调用一些逻辑 之后 setter被称为:

    <bean class="my.CoolClass" init-method="startup">
        <constructor-arg value="Foo" />
        <property name="bar" value="baz" />
    </bean>
    
        2
  •  2
  •   Randy Simon    15 年前

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

        3
  •  2
  •   John    15 年前

    我认为spring不能保证setter的调用顺序。不管调用setter的顺序是什么,都应该让bean工作。如果要在调用所有setter之后进行一些处理,您可能会发现使用 post construction method . 或者如果您使用的是XML配置而不是注释, an initialization method 可能适合。

        4
  •  0
  •   Community Mohan Dere    8 年前

    我在调试器中编写了简单的xml配置和spring源代码。

    似乎与Spring3.x结合 构造函数参数 财产 用XML 定义(检查 豆角豆 在里面 AbstractAutowireCapableBeanFactory.java 哪一个呼叫 创建实例 -构造器和 菜豆 下一个设定者)。

    也见 https://softwareengineering.stackexchange.com/questions/149378/both-constructor-and-setter-injection-together-in-spring/