我有一组通过反射实例化的类,因此这些类不是由CDI容器管理的,并且上下文也不进行注入。我的问题是,是否有任何方法可以在CDI上下文中注册这些类,所以这些类由上下文管理?
贝娄,是我如何创建类:
String clazz = "org.myorg.thisIsMyClass"; MyClass myClass = Class.forName(clazz).newInstance(); // myClass instance not managed by CDI
如何使实例myClass由CDI容器管理?
myClass
如果容器将您的类注册为bean,则可以使用编程查找来轻松获取它们。
@Inject @Any Instance<Object> myBeans; public Object getMyBeanFromClassName(String className) throws Exception{ Class clazz = Class.forName(className); return myBeans.select(clazz).get(); }
等等。