【发布时间】:2012-07-14 05:50:53
【问题描述】:
我正在开发一个连接到 MySQL 数据库的非常小的应用程序。
我正在尝试创建表记录,但得到“没有正在进行的事务”。
我已经准备好了所有合适的东西:
- 一个服务接口MyService及其实现MyServiceImpl
- 我已经用@Service 注释了服务实现
- 在控制器中,我使用了@Autowired MyService 字段的接口名称
- 我有正确的事务配置,因为它最初是由 roo 生成的
- MyServiceImpl 实现了一个公共方法 MyService.create(...)
但是,
当我远程调试并检查控制器的 myService 字段时,我看到的内容类似于 com.some.package.services.MyService@12345 (而不是像 $Proxy73 之类的东西)对我来说是不对的,因为应该自动连接的是代理而不是他的目标 bean(这就是我认为的)。如果我是正确的,那么没有事务是有道理的,因为只有在代理上调用带有 @Transactional 注释的公共方法时,注释才会生效。
请告诉我为什么 spring 在这个设置中注入目标 bean。
谢谢
【问题讨论】:
-
MyServiceImpl是否用@Transactional注释? XML 中有<tx:annotation-driven/>吗? -
感谢您的回复,是的,我有
标签: spring service proxy target autowired