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

时间:2011-11-23 21:42:17

标签: java performance spring inversion-of-control autowired

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

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

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

由于

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

@MasterhardSpring @Autowired usage中有一个有趣的评论:

  

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

另见例如SPR-6870

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

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