[英]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.