Spring与Java反射

Spring与Java反射,java,spring,reflection,Java,Spring,Reflection,我需要动态创建对象。我使用Spring创建类名映射。现在我可以使用 SpringApplicationContext.getbean(类名) 或 JavaClass.forName(className).newInstance() 哪种方法更有效 谢谢。如果它是Spring管理的bean,则需要通过ApplicationContext创建它,否则将不会填充依赖项。如果它不是一个Springbean,只是一个普通Java对象,那么这是不必要的开销,所以您可以只使用后者。如果Springbean是一

我需要动态创建对象。我使用Spring创建类名映射。现在我可以使用

Spring
ApplicationContext.getbean(类名)

Java
Class.forName(className).newInstance()

哪种方法更有效


谢谢。

如果它是Spring管理的bean,则需要通过ApplicationContext创建它,否则将不会填充依赖项。如果它不是一个Springbean,只是一个普通Java对象,那么这是不必要的开销,所以您可以只使用后者。

如果Springbean是一个原型范围的bean,Spring将必须用反射实例化它,因此必须执行第二个代码段所做的操作。但是请求Spring上下文获取bean并不仅仅是获取一个类的新实例。它返回一个Springbean,您可以在其上应用方面(安全性、事务性等)、注入依赖项等


您不应该根据性能来选择调用什么,而应该根据您想要得到什么。无论如何,与应用程序的其他功能(网络调用、数据库查询等)相比,这两个调用的成本可能可以忽略不计。

spring解决方案还可以为您解决创建的对象中的依赖关系。您还可以查看功能

您知道Springbean和常规Java对象之间的区别吗?在我看来,您对Spring还不熟悉,您应该更熟悉Bean是什么,然后上述两种方法之间的区别就会更清楚。您是对的。这正是问题所在。我是Spring的新手,我一直在想上面的两个都给出了相同的(即java对象)。:)