我正在开发一个连接到MySQL数据库的非常小的应用程序。
我试图创建表记录,但是出现了“没有事务在进行中”的错误。
我已经做好了所有需要的步骤:
- 一个服务接口MyService和它的实现类MyServiceImpl
- 我已经使用@Service对服务实现进行了注释
- 在控制器中,我使用了接口名称作为@ Autowired MyService字段
- 我有正确的事务配置,因为它最初是由Roo生成的
- MyService.create(...)是一个公共方法,MyServiceImpl实现了该方法
但是,
当我远程调试并检查控制器的myService字段时,我看到的是类似于com.some.package.services.MyService @ 12345(而不是类似于$ Proxy73)的东西,这对我来说不正确,因为应该自动装配代理而不是目标bean(我认为这就是这个问题)。如果我正确的话,那么当在代理上调用带有@Transactional注释的公共方法时才会触发注释。
请告诉我为什么Spring在这种设置中注入目标bean。
谢谢
MyServiceImpl
是否已经使用@Transactional
进行注解?你的 XML 文件中是否有<tx:annotation-driven/>
? - Tomasz Nurkiewicz