繁体   English   中英

Spring 与 class.forname()

[英]Spring with class.forname()

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

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

如果您正在开发 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);

希望这将为您的问题提供答案。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM