使用 AspectJ 时,为什么要使用 @Component 而不是 @Configurable。
我已经为 @Transactional 支持、自调用方面以及注入 JPA 实体设置了 Spring 和 AspectJ。这很好用。
我将@Component 用于大多数需要注入的类,因此要么将它们注入到它们的依赖项中。或者,当我不能时,注入 ApplicationContext 然后使用 getBean() 作为最后的手段。我只为需要注入的 JPA 实体(Hibernate)保留 @Configurable。我还开始使用 @Configurable 进行 jUnit 测试,以简化编写测试。这也很好用。
但我很好奇。如果 AspectJ 现在使用 @Configurable 注释自动注入(beanifying)任何东西,不管它是如何构造的;getBean()、new()、@Autowired。为什么我不切换到对我所有的 bean 使用 @Configurable 呢?然后我可以完全取消应用程序上下文和 getBean(),而只需 new() 任何我无法注入的类。
我意识到我没有提到 XML bean 配置。我并不回避这一点,但这个项目恰好不需要任何东西。我只是在测试时构造函数或设置器注入依赖项。好简单。