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