gpt4 book ai didi

wildfly - 获取带有具有绑定(bind)值的限定符的所有 bean

转载 作者:行者123 更新时间:2023-12-02 21:03:48 25 4
gpt4 key购买 nike

我的应用程序中有一个自定义限定符,可以像这样使用:

@Person(name = "bob")
public class Bob implements IPerson { ... }

其中 Person 限定符的 name 值进行绑定(bind)。 (未使用 @Nonbinding 进行注释)

我的应用程序的一部分需要了解所有 Person beans,而我的应用程序的另一部分需要访问特定的 Person

要访问特定的,我可以使用:

@Inject @Person(name = "bob")
IPerson bob;

但是我怎样才能获得所有的Person bean呢?我无法使用

@Inject @Person(name = "")
Instance<IPersion> people;

因为 name 已绑定(bind)。如果我将 name 声明为 @Nonbinding 上面的代码可以工作,但我无法再通过其名称注入(inject)特定的 Person。

我目前使用以下方法来获取所有 Person beans:

@Inject @Any
private Instance<IPerson> people;
...
for (IPerson person : people) {
if (hasPersonAnnotaion(person)) {...}
}

hasPersonAnnotaion() 以编程方式检查 Person 类中的 @Person 注释。有更好的办法吗?

最佳答案

在代码的当前状态下,@Any看起来是最好的选择。显然,您需要执行过滤。

虽然知道您的代码将需要具有给定限定符的所有实例并且如果过滤成本很高(很多实例没有 @Person 限定符?),您可能需要添加额外的限定符而不需要绑定(bind)值将在每个IPerson上- 类似 @IsPerson 。那么你可以@Inject @IsPerson Instance<IPerson> people并且不需要过滤。

请注意,额外的限定符不会给您现有注入(inject)点带来麻烦(例如 @Inject @Person(name = "bob") IPerson bob; 仍然有效)。

关于wildfly - 获取带有具有绑定(bind)值的限定符的所有 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921059/

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