Spring with class.forname()

时间:2011-07-01 04:34:54

标签: java spring

如果应用程序由Spring容器管理,开发人员是否仍然可以使用class.forName()来创建特定类的实例?或者会违反Spring容器并导致一些异常?

2 个答案:

答案 0 :(得分:4)

是的,你可以使用它。但是,Spring不会管理生成的对象。

答案 1 :(得分:2)

如果您正在开发一个Web应用程序并假设您已在applicationContext.xml中定义了bean,那么您可以使用:

ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());        
AnyBean anyBean = (AnyBean) applicationContext.getBean("anyBean");

其中anyBean是该xml中定义的bean的id。虽然它不会创建新实例,但它会返回一个实例。

此外,您可以以编程方式创建bean,并可以注册到上下文:

GenericWebApplicationContext context = new GenericWebApplicationContext();
RootBeanDefinition anyBean = new RootBeanDefinition(AnyBean.class);
context.registerBeanDefinition("anyBean",anyBean);

希望这会给出你问题的答案。感谢。