【发布时间】:2013-09-25 02:39:22
【问题描述】:
我找不到任何理由说明为什么每个自动装配的 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 配置。什么可以关闭代理自动装配?
【问题讨论】:
标签: spring proxy-classes