自动装配的spring bean不是代理

我正在开发一个连接 MySQL数据库的非常小的应用程序.

我正在尝试创建表记录但是“没有正在进行的事务”.

我有适当的东西:

>服务接口MyService及其实现MyServiceImpl
>我已使用@Service注释了服务impl
>在控制器中,我使用字段@Autowired MyService的接口名称
>我有正确的事务配置,因为它最初是由roo生成的
> MyServiceImpl实现了一个公共方法MyService.create(…)

但,

当我远程调试并检查控制器的myService字段时,我看到的是类似的东西
com.some.package.services.MyService@12345(而不是像$Proxy73那样)对我来说是不对的,因为应该自动装配的是代理而不是他的目标bean(我认为这是).如果我是正确的,那么没有事务是有意义的,因为注释只会在调用在代理上使用@Transactional注释的公共方法时启动.

请告诉我为什么spring在这个设置中注入目标bean.

谢谢

如果您启用了支持AspectJ的事务管理(< tx:annotation-driven mode =“aspectj”... />),则在构建(编译时编织)或在启动时(加载时编织).

没有创建新类(比如使用cglib时)和没有代理(比如Spring中基于普通接口的AOP).而是直接修改了MyServiceImpl的字节码,你甚至没有注意到.不幸的是,查看AOP的唯一方法是反编译你的类.如果你使用javap -c MyServiceImpl,你会发现很多对Spring事务层的引用.

相关文章
相关标签/搜索