编程语言
首页 > 编程语言> > java – CDI:在生成scoped bean时获取InjectionPoint

java – CDI:在生成scoped bean时获取InjectionPoint

作者:互联网

当你的生产者方法生成一个scoped bean时,最简单的获取InjectionPoint的方法是什么?由于某种原因,规范只允许在生成scoped bean时注入InjectionPoint.
有没有一种简单的方法可以做到这一点或某种bolg条目或教程?

为了澄清,这是我喜欢做的事情,但规范禁止的是:

@Produces
@RequestScoped
@MyAnnotation    
private MyObject produce(InjectioPoint ip){
....
}

解决方法:

让我们想象你想做什么是可能的.你有一个@ApplicationScoped bean定义:

@Produces
@ApplicationScoped
String produceMyString(InjectionPoint ip) {}

你有两个注入点:

@Inject
String myString1;

@Inject
String myString2;

由于bean是ApplicationScoped,生成器方法只会被调用一次.由此得出的结论是,由于容器不能选择使用哪个注入点作为生产者方法的参数,因此不可能得出结论.

这解释了为什么访问InjectionPoint元数据会强制bean为@Dependent.换句话说,CDI规范禁止这种行为,因为它导致矛盾,而不是因为任意选择.

标签:java,cdi
来源: https://codeday.me/bug/20190830/1765505.html