获取具有绑定值的限定符的所有bean

问题描述 投票:3回答:1

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

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

其中name限定符的Person值具有约束力。 (未使用@Nonbinding注释)

我的应用程序的一部分需要知道所有qazxsw poi bean,我的应用程序的另一部分需要访问特定的qazxsw poi

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

Person

但是如何获得所有Person bean?我不能用

Person

因为@Inject @Person(name = "bob") IPerson bob; 具有约束力。如果我将@Inject @Person(name = "") Instance<IPersion> people; 声明为name,则上述代码可以正常工作,但我不再能够通过它的名称注入特定的人员。

我目前使用以下方法来获取所有name bean:

@Nonbinding

Person以编程方式检查人类的@Inject @Any private Instance<IPerson> people; ... for (IPerson person : people) { if (hasPersonAnnotaion(person)) {...} } 注释。有没有更好的办法?

wildfly cdi weld
1个回答
0
投票

在您的代码的当前状态,hasPersonAnnotaion()看起来是最好的选择。有了它,你显然需要你执行的过滤。

虽然知道你的代码将需要具有给定限定符的所有实例,并且如果过滤是pricy(很多实例没有@Person限定符?),你可能想要添加额外的限定符,而不是每个@Any上的绑定值 - 类似于@Person。然后你可以IPerson,不需要过滤。

请注意,额外的限定符不会让您在现有注入点方面感到头痛(例如@IsPerson仍然有效)。

© www.soinside.com 2019 - 2024. All rights reserved.