gpt4 book ai didi

java - CDI:在生成范围bean时获取InjectionPoint

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:58 25 4
gpt4 key购买 nike

当您的生产者方法正在生成作用域 bean 时,获取 InjectionPoint 的最简单方法是什么?出于某种原因,规范只允许在生成作用域 bean 时注入(inject) InjectionPoint。有没有一种简单的方法可以做到这一点,或者有某种 bolg 条目或教程吗?

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

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

最佳答案

让我们想象一下您想要做的事情是可能的。您定义了一个 @ApplicationScoped bean:

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

并且您有两个用于该 bean 的注入(inject)点:

@Inject
String myString1;

@Inject
String myString2;

由于 bean 是 ApplicationScoped,因此生产者方法只会被调用一次。这导致了不可能的结论,因为容器无法选择将哪个注入(inject)点用作生产者方法的参数。

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

关于java - CDI:在生成范围bean时获取InjectionPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28723153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com