在Spring中,我可以使用应用程序上下文动态创建bean。
在java企业中搜索一些类似代码的代码,我遇到了以下代码片段:
public class BeanManagingUtils {
private BeanManager beanManager;
public BeanManagingUtils()
{
try {
InitialContext initialContext = new InitialContext();
beanManager = (BeanManager) initialContext.lookup("java:comp/BeanManager");
}
catch (NamingException e) {
//log.error("Couldn't get BeanManager through JNDI");
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public <T> T getContextualInstance(final Class<T> type)
{
T result = null;
Bean<T> bean = (Bean<T>) beanManager.resolve(beanManager.getBeans(type));
if (bean != null)
{
CreationalContext<T> context = beanManager.createCreationalContext(bean);
if (context != null)
{
result = (T) beanManager.getReference(bean, type, context);
}
}
return result;
}
}
通过使用类调用getContextualInstance,我可以得到它(有点)来生成一个bean,但是我不知道它生成了什么类型的bean,例如它是无状态ejb,有状态ejb,托管如果所讨论的bean根本没有注释,它似乎很愉快地创建它,如果我使用'@Stateful'注释bean,则会出错。我不明白这里有关于BeanManager的文档http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/spi/BeanManager.html
任何人都可以了解它正在做什么以及它创造了什么样的豆类,或者指出我更全面的文档?
非常感谢!