Java EE 7: внедрить все экземпляры bean-компонентов по шаблону имени - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы получить все экземпляры bean-компонентов, имя класса которых заканчивается на Cache.

Возможно ли это в Java EE 7?Если да, то как?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Использование метода производителя, который извлекает bean-компоненты заданного типа из BeanManager и фильтрует их по имени класса

@Produces  
public List<MyInterface> produceMyInterfaces() {  
    return beanManager.getBeans(MyInterface.class).stream().filter(e -> e.getClass().getSimpleName().contains("something").collect(Collectors.toList());  
}  
0 голосов
/ 15 мая 2018

Вы можете ввести BeanManager:

@Inject
BeanManager beanManager;

Затем вы можете получить бобы из контейнера CDI.Если ваши компоненты не имеют общего интерфейса, вы можете использовать:

Set<Bean<?>> beans = beanManager.getBeans(Object.class, new AnnotationLiteral<Any>() {}));

Затем выполнить итерацию по набору и отфильтровать его в соответствии с вашими потребностями.

...