CDI specification says, in part:
Contextual
的实施[例如]您的自定义Bean
]无需致电push()
。但是,对于某些bean作用域,在实例化和注入之间调用push()
有助于容器最小化客户端代理对象的使用(否则将需要允许循环依赖)。
我长期以来一直在努力解决现实世界的问题。
如果我正在编写可移植扩展程序,并且在执行此操作时,我会以编程方式将Bean
个实例添加到容器中,是否会执行任何损害以始终从creationalContext.push(this)
调用Bean
在my Bean
's create(CreationalContext)
method内?是否存在“某些bean范围”意味着什么的真实翻译?
我正在寻找类似“如果你的Frobnicator
将在push()
范围内,那么就不要打电话给Fizzbuzz
,但是如果它会在https://apinsta.herokuapp.com/u/USERNAME
范围,然后你总是想这样做“。显然,我也想了解这些建议背后的原因。
答案 0 :(得分:0)
这可能是值得问CDI-dev mailing list的问题,实际答案和规范中的澄清请求。
正如你自己想象的那样,它的记录很少,所以我在这里要求的任何东西都不能通过引用规范来支持,所以请用一点点盐。 < / p>
据我所知,这主要用于注射中的循环依赖。如果你不这样做,那么你可以放心地忽略它。此外,Weld为您解决了经典的循环注入问题,因此这仅适用于@Produces
和可能 @PostConstruct
。
这样做的目的是存储一个&#34;部分创建的&#34;上下文中的实例,以满足分辨率并继续创建循环依赖的bean。