我有一个生产者方法,可以创建(比方说)Person
的实例。
此方法创建的实例属于 PersonBean
类型,并且很明显实现了 Person
。
该类中有一个初始化方法:
@Inject
public void setSomething(final Something something) {
// whatever
}
bean 存档中的类路径上还有一个 Something
实现,它应该是此处注入(inject)的候选者。
我观察到这个实现被注入(inject)到另一个非生产者方法生成的对象的适当注释的字段中,所以我知道 Weld 正在找到它,它是有效的,等等。
(对我来说)规范并不清楚我的生产者方法的返回值是否也会应用 Weld/容器提供的依赖注入(inject)。
我确实观察到这个初始化方法不会自动调用。
归根结底,我的问题是:如果我正在生成一个对象,那么这是否意味着我的生成器方法必须处理该对象的所有初始化,或者(我所期望的)我的生产者方法仅负责实例化吗?
最佳答案
if I am producing an object, then does that mean my producer method must take care of all initialization of that object, or (what I'd expect instead) is my producer method only responsible for instantiation?
3.3. Producer methods
A producer method acts as a source of objects to be injected, where:
- the objects to be injected are not required to be instances of beans,
这应该回答您的问题:如果您要实例化一个新对象(使用new
),您将必须负责初始化。
(生产者方法的一个可能更常见的用例是在特定范围内配置和生成现有 bean...)
关于cdi - 如果我的对象是由生产者方法生成的,它的初始化方法会被自动调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920455/