У меня есть пользовательский квалификатор в моем приложении, который можно использовать как:
@Person(name = "bob")
public class Bob implements IPerson { ... }
, где значение name
квалификатора Person
является обязательным.(Не помечены @Nonbinding
)
Одна часть моего приложения должна знать все Person
bean-компоненты, а другая часть моего приложения нуждается в доступе к определенному Person
Для доступа кконкретные Person
Я могу использовать:
@Inject @Person(name = "bob")
IPerson bob;
Но как я могу получить все бины Person?Я не могу использовать
@Inject @Person(name = "")
Instance<IPersion> people;
, поскольку name
является обязательным.Если я объявляю name
как @Nonbinding
, приведенный выше код работает, но я больше не могу вводить конкретное лицо через его имя.
В настоящее время я использую следующий метод для получения всех Person
bean-компонентов:
@Inject @Any
private Instance<IPerson> people;
...
for (IPerson person : people) {
if (hasPersonAnnotaion(person)) {...}
}
, тогда как hasPersonAnnotaion()
программно проверяет класс лиц для аннотации @Person
.Есть ли лучший способ?