Java Spring与class.forname()一起使用

Java Spring与class.forname()一起使用,java,spring,Java,Spring,如果应用程序由Spring容器管理,那么开发人员仍然可以使用class.forName()创建特定类的实例吗?或者这会违反Spring容器并导致一些异常吗?是的,您可以使用它。但是,生成的对象将不由Spring管理。如果您正在开发web应用程序,并且假设您在applicationContext.xml中定义了bean,那么您可以使用: ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicat

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

是的,您可以使用它。但是,生成的对象将不由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);

希望这能回答你的问题。谢谢。

嗨,亚历克斯,谢谢你的快速回复。你能提供一些例子吗??另外,如果我想让spring容器管理这个新对象呢?嗨,Tapas,谢谢你的代码。您是否能够显示使用class.forname调用Springbean的代码???@Mike对象不受spring管理意味着它将不会自动连接和代理,并且其他Springbean将无法使用它。另一种说法是依赖项注入不会发生在这个对象上。您可以在许多地方找到创建对象的示例。例如