【发布时间】:2013-04-18 19:20:36
【问题描述】:
理想情况下,我希望 Spring 从我的上下文配置中实例化所有 bean,按照指定将它们连接在一起,但永远不要在其中任何一个上调用 init()。这可能吗?
其他可能适合我需要的东西:如果有一个钩子在接线之后但在任何 bean 上调用 init() 之前运行。
【问题讨论】:
标签: java spring dependency-injection autowired
理想情况下,我希望 Spring 从我的上下文配置中实例化所有 bean,按照指定将它们连接在一起,但永远不要在其中任何一个上调用 init()。这可能吗?
其他可能适合我需要的东西:如果有一个钩子在接线之后但在任何 bean 上调用 init() 之前运行。
【问题讨论】:
标签: java spring dependency-injection autowired
您可以实现InitializingBean 以使用afterPropertiesSet 或使用@PostConstruct 在构造后执行某些操作,但这并不能保证它在接线之前,但听起来这不是您正在寻找的答案。
无法保证 Spring 将初始化 bean 的顺序,因为它必须找出最佳的初始化顺序来处理循环引用等问题。
真正保证在连接到另一个 bean 之前发生某些事情的唯一方法是在构造函数中执行它。这就是为什么我总是使用构造函数而不是属性/设置器注入。
【讨论】: