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也会带来一些开销。
- 如何在Spring中更新@Autowired String bean的值?
- Java Config @Bean未在其他@Configuration类中自动assembly
- Spring JUnit4手动/自动接线困境
- 自动assembly由EasyMock工厂方法生成的bean?
- 无法自动assembly。 找不到SimpMessagingTemplate类型的bean
- 我不能使用注释来指示bean是主bean
- Spring 4.1 @Qualifier没有工作
- 无法自动assembly字段:private org.springframework.security.core.userdetails.UserDetailsService
- Spring 3.2 Autowiregenerics类型