2

我有一个生产者方法,可以创建实例——比如说——<code>Person。

此方法创建的实例是类型的PersonBean,并且很明显实现了Person.

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

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

bean 存档中的类路径上还有一个Something实现,应该是此处注入的候选对象。

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

规范不清楚(对我来说)我的生产者方法的返回值是否也会应用焊接/容器提供的依赖注入。

我当然注意到这个初始化方法不会自动调用。

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

4

1 回答 1

3

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

从规范:

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配置和生产到某个范围内......)

于 2012-06-07T04:20:21.657 回答