【问题标题】:All @Resource injection before any @PostConstruct again再次在任何@PostConstruct 之前进行所有@Resource 注入
【发布时间】:2010-07-14 09:16:58
【问题描述】:
JSR-250 表示所有 @Resource 注释的方法都将在 @PostConstruct 方法之前调用..
我的问题是:
这是否意味着在调用任何 @PostConstruct 注释方法之前,将调用上下文中所有 bean 上的所有 @Resource 注释方法?
或者换句话说,即使上下文中的其他 bean 仍然没有注入依赖项,一旦注入了它的依赖项,是否可以调用 bean 的 @PostConstruct 方法?
问候,
蒂姆。
【问题讨论】:
标签:
java
spring
resources
lifecycle
postconstruct
【解决方案1】:
保证当给定 bean 的 @PostConstruct 被调用时,它的所有 @Resource 字段都将被注入。如果这些注入中的任何一个本身是具有自己的 @Resource 和 @PostConstruct 的 bean,那么它们将已经被调用。换句话说,在调用任何给定的@PostConstruct 时,可以保证它的所有依赖项都已完全初始化。
有可能,事实上很可能,BeanA 将在 BeanB 被实例化之前通过 @PostConstruct 构造和初始化,如果 BeanB 没有明确的依赖于BeanA.