如果应用程序由Spring容器管理,开发人员是否仍然可以使用class.forName()
来创建特定类的实例?或者会违反Spring容器并导致一些异常?
答案 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);
希望这会给出你问题的答案。感谢。