我找不到任何理由说明为什么每个自动装配的 bean 都不是由代理自动装配的。我知道因为@Transactional
注释不起作用,并且我在 Eclipse 中调试期间检查了自动装配组件。当然,每个组件都实现了一些接口,我使用@Autowired
与接口相关的注释。我只有一种aop的配置:
<tx:annotation-driven transaction-manager="transactionManager" />
我将 JPA 与 hibernate、spring-mvc、spring-webflow、spring-security 和 spring-data 一起使用。扩展org.springframework.data.repository.CrudRepository
的接口由代理自动装配。但我的组件不是。例如,我有MyClass
实现的类MyInterface
:
@Service
public class MyClass implements MyInterface {
@Autowired
MyCrudReposiotry reposiotry;
....
}
如果我在某处自动连接 MyInterface:
@Autowired
MyInterface mi;
然后mi
只是对MyClass
对象的引用,存储库是对代理的引用org.springframework.aop.framework.JdkDynamicAopProxy
。非常有趣的是,在测试mi
中引用了代理。我的测试上下文不包含 web-flow 和 mvc 配置。
也许我应该检查一些间接的 aop 配置。什么可以关闭代理自动装配?