Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @Autowired、@Resource和使用属性注入的Spring性能_Java_Spring_Performance_Dependency Injection - Fatal编程技术网

Java @Autowired、@Resource和使用属性注入的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作用域和一个合理的应用程序,它不会有太大的

我的问题是,使用Spring的依赖项注入的以下情况之间是否存在显著的性能差异:

  • @java文件中的资源(名称=…)
  • @在java文件中自动连接
  • java文件中的setter和spring-beans.xml文件中的
性能应及时测量,并在运行时和系统初始化期间进行测量。 假设:所有bean都属于scope=“singleton”

我对用这种方式与Spring合作还很陌生,所以如果我遗漏了任何细节或者这个问题无关紧要,请告诉我


感谢有了singleton作用域和一个合理的应用程序,它不会有太大的区别,除非您使用大量的懒bean定义,否则性能的差异将取决于应用程序的启动时间

让我们以三个例子中的每一个为例:

  • @Resource
    按名称注入,因此它实际上是每个键的查找(fast)
  • @Autowired
    本质上是对每个类型的查找,这意味着容器必须能够知道在应用程序上下文中定义的托管bean的类型。这稍微慢一点
  • 示例中的XML配置是一个关键参考(fast)
  • 如果你有一个合理的应用程序,它其实并不重要。如果您有一个包含10k类的应用程序,并且您在根包上配置了类路径扫描,那么类路径扫描可能需要一些时间,特别是如果类不位于jar文件中(在目录中按类型查找要慢得多)


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

    运行时,否,可能会启动(至少在xml和注释扫描之间),因为需要扫描所有bean。多少取决于有多少bean、扫描多少包等。通常,典型的web应用程序开发人员遇到的大多数性能问题都是由于对外部系统(如数据库或其他服务器上的服务)的访问效率低下所致。