使用Spring和AspectJ进行可配置的组件

使用AspectJ时,为什么使用@Component over @Configurable。

我已经为@Transactional支持设置了Spring和AspectJ设置,自调用方面以及注入JPA实体。 这很好。

我为大多数需要注入的类使用@Component,因此要么将它们注入到它们的依赖项中。 或者,当我不能时,注入ApplicationContext,然后使用getBean()作为最后的手段。 而且,我仅为需要注入的JPA实体(Hibernate)保留@Configurable。 我还开始使用@Configurable进行jUnit测试,以便简化写作测试。 这也很好。

但我很好奇。 如果AspectJ现在使用@Configurable注解自动注入(beanization)任何东西,不管它是如何构造的; getBean(),new(),@Autowired。 为什么我不能只为所有的bean使用@Configurable? 然后,我可以完全取消应用程序上下文和getBean(),只是new()我不能注入的任何类。

我意识到我没有提到XML bean配置。 我不回避,但这个项目并不需要任何。 我只是构造函数或setter在测试时注入依赖项。 好简单。


你不应该总是使用@Configurable一个原因是,它增加了很多开销:启动应用程序通常需要更长的时间,并且创建新实例变得更慢。

对于@Component ,根本不需要它,因为通常所有的实例都是由Spring管理的。


@Component是一个Spring标记界面,当涉及到bean的自动检测时,它可以给Spring提供线索。

@Configurable是AOP加载时织造材料使用的标记。

这两者并没有太大的关系。


@Component是用于Spring本身实例化的类,而@Configurable用于将由您自己的代码或另一个框架实例化的类 - 例如由Hibernate或Servlet容器实现的实体。

链接地址: http://www.djcxy.com/p/25403.html

上一篇: Configurable vs Component with Spring and AspectJ

下一篇: Many set intersections on GPU