如果我的对象是由生成器方法生成的,它的初始化方法是否会自动调用?

时间:2012-06-06 19:01:52

标签: cdi jsr299

我有一个生成器方法,可以创建 - 例如 - Person的实例。

此方法创建的实例属于PersonBean类型,并且显然实现了Person

这个类中有一个初始化方法:

@Inject
public void setSomething(final Something something) {
  // whatever
}

bean归档中的类路径上还有一个Something实现,应该是这里注入的候选者。

我观察到这个实现被注入到另一个非生产者方法生成的对象的适当注释的字段中,因此我知道Weld正在发现它,它是有效的等等。

关于我的生产者方法的返回值是否是否已经应用了焊接/容器提供的依赖注入,规范尚不清楚(对我而言)。

我当然在观察不会自动调用此初始化方法。

归结起来,我的问题是:如果我正在生成一个对象,那么这是否意味着我的生产者方法必须处理该对象的所有初始化,或者(我期望的是)是我的生产者方法负责实例化?

1 个答案:

答案 0 :(得分:3)

  

如果我正在生成一个对象,那么这是否意味着我的生产者方法   必须处理该对象的所有初始化,或(我会做什么   期待而来)是我的生产者方法只负责   实例

From the spec:

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 到某个范围......)