gpt4 book ai didi

java - @Autowired、@Resource 和使用属性注入(inject)的 Spring 性能

转载 作者:行者123 更新时间:2023-11-30 11:19:47 25 4
gpt4 key购买 nike

我的问题是在以下使用 Spring 的依赖注入(inject)案例之间是否存在任何显着的性能差异:

  • java文件中的@Resource(name=...)
  • 在java文件中@Autowired
  • java 文件中的 setter 和 spring-beans.xml 文件中的

性能应该在运行时和系统初始化期间及时测量。假设:所有 bean 的范围都是 ="singleton"。

我对以这种方式使用 Spring 还很陌生,所以如果我遗漏了任何细节或者问题不相关,请告诉我。

谢谢

最佳答案

对于单例作用域和合理应用程序,它应该不会有太大区别,除非您使用大量惰性 bean 定义,否则性能差异将取决于您的应用程序启动时间。

让我们分别举三个例子:

  1. @Resource 按名称注入(inject),因此它实际上是一个查找每个键(快速)
  2. @Autowired 本质上是按类型 查找,这意味着容器必须能够知道 定义的托管 bean 的类型在应用上下文中。这有点慢
  3. 您示例中的 XML 配置是关键引用(快速)

如果您有一份合理的申请,那并不重要。如果您有一个包含 10k 个类的应用程序并且您在根包中配置了类路径扫描,类路径扫描可能需要一些时间,特别是如果类不在 jar 文件中(在目录中按类型查找要慢得多)。

除了连接 bean 的性能成本通常位于应用程序的启动阶段之外,您的问题没有最终答案。启动上下文后,将从缓存中检索单例 bean。

关于java - @Autowired、@Resource 和使用属性注入(inject)的 Spring 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23081699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com