我想获取类名以Cache
结尾的所有bean实例。
这在Java EE 7中是否可行?如果是这样,怎么样?
答案 0 :(得分:1)
您可以注入BeanManager
:
@Inject
BeanManager beanManager;
然后你可以从CDI容器中get the beans。如果您的bean没有通用界面,您可以使用:
Set<Bean<?>> beans = beanManager.getBeans(Object.class, new AnnotationLiteral<Any>() {}));
然后迭代集合并根据您的需要对其进行过滤。
答案 1 :(得分:0)
使用从BeanManager
检索给定类型的bean的producer方法,并根据类名对其进行过滤
@Produces
public List<MyInterface> produceMyInterfaces() {
return beanManager.getBeans(MyInterface.class).stream().filter(e -> e.getClass().getSimpleName().contains("something").collect(Collectors.toList());
}