Spring注释与我的设计指南相矛盾
概观
运用
@Service
, @Transactional
, @ManagedResource
, @Inject
等) 指引亮点
@Repository
或@Service
注解的bean都必须有一个接口 Foo(Bar bar) {...}
) final class Foo
) 问题
@Transactional
@Service
可以通过Facade服务来访问,这需要在Facade事务中包含多个服务(例如,2个应用程序组件的Observer服务) @Qualifier
区分) beanRefContext.xml
文件来配置其内部应用程序上下文 当我使用XML配置工作时,我能够执行上面介绍的所有准则,但切换到注释时,Spring看起来像是行为不端。
我的团队中的开发人员更喜欢注释配置(我似乎更容易连线和编写新代码),但我注意到他们向代码引入了所有类型的“黑客”,以防止处理Spring应用程序上下文故障。
问题(S)
@Primary
或@Qualifier
的使用) @Transactional
@ManagedResource
我提出了以下解决方案(问题#2和#3),以便能够执行我的设计指南并继续使用基于注释的配置:
ApplicationContext
beanRefContext.xml
定义 上述步骤还使我能够减少Spring了解测试的执行时间(每个模块只加载一个子集的bean)。
作为一个实用指南(对于问题1),如果一个接口有多个实现,我将@Primary
放置在广泛使用的一个和其他客户端上,需要另一个实现,使用@Qualifier
这个bean。
回答第2点)您可以使用AspectJ代替CGLib。
链接地址: http://www.djcxy.com/p/62811.html