Java @Autowired、@Resource和使用属性注入的Spring性能
我的问题是,使用Spring的依赖项注入的以下情况之间是否存在显著的性能差异:Java @Autowired、@Resource和使用属性注入的Spring性能,java,spring,performance,dependency-injection,Java,Spring,Performance,Dependency Injection,我的问题是,使用Spring的依赖项注入的以下情况之间是否存在显著的性能差异: @java文件中的资源(名称=…) @在java文件中自动连接 java文件中的setter和spring-beans.xml文件中的 性能应及时测量,并在运行时和系统初始化期间进行测量。 假设:所有bean都属于scope=“singleton” 我对用这种方式与Spring合作还很陌生,所以如果我遗漏了任何细节或者这个问题无关紧要,请告诉我 感谢有了singleton作用域和一个合理的应用程序,它不会有太大的
- @java文件中的资源(名称=…)
- @在java文件中自动连接
- java文件中的setter和spring-beans.xml文件中的
感谢有了singleton作用域和一个合理的应用程序,它不会有太大的区别,除非您使用大量的懒bean定义,否则性能的差异将取决于应用程序的启动时间 让我们以三个例子中的每一个为例:
@Resource
按名称注入,因此它实际上是每个键的查找(fast)@Autowired
本质上是对每个类型的查找,这意味着容器必须能够知道在应用程序上下文中定义的托管bean的类型。这稍微慢一点除了连接bean的性能成本通常位于应用程序的启动阶段之外,您的问题没有最终答案。一旦上下文启动,将从缓存中检索单例bean。运行时,否,可能会启动(至少在xml和注释扫描之间),因为需要扫描所有bean。多少取决于有多少bean、扫描多少包等。通常,典型的web应用程序开发人员遇到的大多数性能问题都是由于对外部系统(如数据库或其他服务器上的服务)的访问效率低下所致。