Dra*_*Fax 11 aop spring annotations configurable spring-aop
使用AspectJ时,为什么要在@Configurable上使用@Component.
我有@Transactional支持的Spring和AspectJ设置,自我调用的方面以及注入JPA实体.这非常有效.
我正在将@Component用于大多数需要注入的类,因此要么将它们注入到它们的依赖项中.或者,当我不能,注入ApplicationContext然后使用getBean()作为最后的手段.我只为需要注入的JPA实体(Hibernate)保留@Configurable.我也开始使用@Configurable进行jUnit测试,使编写测试变得容易.这也很有效.
但我很好奇.如果AspectJ现在使用@Configurable注释自动注入(bean化)任何东西,无论它是如何构造的; getBean(),new(),@ Autowired.为什么我不能只为我的所有bean切换到使用@Configurable?然后我可以完全取消应用程序上下文和getBean(),只需要new()我无法注入的任何类.
我意识到我没有提到XML bean配置.我并不回避这一点,但这个项目并不需要任何.我只是构造函数或setter在测试时注入依赖项.很容易.
ska*_*man 12
@Component是一个Spring标记接口,可以在自动检测bean时提供Spring线索.
@Configurable是AOP加载时编织东西使用的标记.
这两者并没有太多关系.
@Component
适用于将由Spring本身实例化的@Configurable
类,而适用于将由您自己的代码实例化的类,或者由其他框架实例化的实例 - 例如,由servlet容器通过Hibernate或Servlet实例化.
您不应该总是使用的原因之一@Configurable
是它会增加大量开销:应用程序启动通常需要更长的时间,并且创建新实例会变得更慢。
因为@Component
你根本不需要它,因为通常所有实例都是由 Spring 管理的。
归档时间: |
|
查看次数: |
8925 次 |
最近记录: |