一尘不染

在CDI容器中手动注册类

java

我有一组通过反射实例化的类,因此这些类不是由CDI容器管理的,并且上下文也不进行注入。我的问题是,是否有任何方法可以在CDI上下文中注册这些类,所以这些类由上下文管理?

贝娄,是我如何创建类:

String clazz = "org.myorg.thisIsMyClass";
MyClass myClass = Class.forName(clazz).newInstance(); // myClass instance not managed by CDI

如何使实例myClass由CDI容器管理?


阅读 290

收藏
2020-12-03

共1个答案

一尘不染

如果容器将您的类注册为bean,则可以使用编程查找来轻松获取它们。

@Inject
@Any
Instance<Object> myBeans;

public Object getMyBeanFromClassName(String className) throws Exception{    
    Class clazz = Class.forName(className);
    return myBeans.select(clazz).get();  
}

等等。

2020-12-03