当前位置: 首页 > 知识库问答 >
问题:

如果我的对象是由producer方法生成的,它的初始值设定项方法会被自动调用吗?

袁开宇
2023-03-14

我有一个producer方法,可以创建-Person的实例。

此方法创建的实例类型为Person,并且非常明显地实现了Person

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

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

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

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

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

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

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

共有1个答案

谯翔
2023-03-14

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

从规格:

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…)

 类似资料:
  • 问题内容: 我在该类中看到,该对象(类型为)已用一个值初始化。我们该如何调用like方法 ?在System类中,以这种方式初始化out变量: 如上所示,代码变量由null初始化,并且此变量是最终变量,因此无法进一步初始化,那么我们如何使用“ out”变量。 问题答案: JVM调用初始化它的方法。 参见这两行代码: 这是两种本机方法: 有一篇不错的文章。

  • 使用bytepal拦截类Foo,有两种方法A、B 在A方法中,B方法被调用。如果我们在intercetpor类栏中同时删除A和B到C方法,它们在第一行调用 会发生什么?这些方法的执行顺序是什么?

  • 让我们从一个非常简单的例子中推断出来:a类: 子类b继承A:

  • 为了操作一个对象,我们需要先获取这个对象的实例,而这肯定会涉及调用对象的构造方法。有关如何在扩展中调用PHP的函数与对象的方法这里不展开描述了。 首先我们先了解下一个object在PHP内核中到底是如何实现的。 typedef struct _zend_object_value { zend_object_handle handle; zend_object_handlers *h

  • 在helper类的静态方法中调用时,它会抛出一个NPE。我所做的是嘲笑MarkupMaker和它的返回值(一个Markup实例)。最后,我希望调用标记实例的。无论我做什么-的调用都是抛出一个NPE。我找不到任何文档告诉我如何在spock中详细模拟方法调用值。 编辑:我添加了示例。的调用返回null,即使我在spock测试中对其进行了嘲弄。 test.groovy java(执行模拟对象的方法) j