Spring的@Autowired是一个巨大的性能问题吗?

我有一个项目……我不知道…… 200-300 daos / services / controllers我使用@Autowired连接所有内容而不是在applicationContext.xml指定所有内容。

我的问题是,这对我的创业时间有多大影响? 是否值得删除所有@Autowired注释并实际通过applicationContext.xml手动连接此applicationContext.xml

从架构的角度来看,我喜欢@Autowired 。 我不想通过使用xml文件添加另一层复杂性 – 就我而言,它没有增加任何价值。 但是,如果这种事情为我的容器的加载时间增加10秒,我可能会考虑它。 如果成本是100毫秒,那么我会保持原样。

谢谢

几乎一样。 组件扫描有点贵(当您扫描@Service @Component@Service Component时),但正如您所说,它是启动时 – 它只发生一次。 在中等机器上,即使使用注释,它也会很快启动。

一般来说,我不会因为它增加了一点启动时间而放弃了这种方法。 而且我可以向你保证这一点并不重要(比你现在更大的项目工作)

@Masterhard在Spring @Autowired用法中有一个有趣的评论:

在我们的大项目中,我们正在从@Autowire切换回XML配置。 问题是自举性能非常低 。 自动assembly扫描程序从自动assembly搜索类路径加载所有类,因此,在Spring初始化期间急切地加载了许多类。

另请参阅例如SPR-6870 。

然而! 使用注释进行自动assembly非常方便,在切换回XML之前我会三思而后行。 除非启动时间确实是您项目中的问题,并且您可以certificate它是导致它的CLASSPATH扫描,所以请保留注释。 还要记住Java EE也会转向注释。

PS:解析数千行XML也会带来一些开销。