最近遇到个问题,服务端框架被重新构建后,发现spring里配置的@Transaction失效了,报了hibernate session未绑定的错误:
具体流程是:
1.注册函数:
2.反射调用这个注册的方法
这个invoke的 _this就是上面注册时候的this
其中_onLogin方法是有@transaction的,但是从debug的结果可以看出来,这个方法并没有被AOP代理,所以自然没有处理transaction。
原因就在于invoke的_this,并不是spring的代理类,也就是说 是脱离spring管理的类,所以aop不起作用自然正常
改造方法有两种:
注册函数的时候 this,使用spring的代理类
或者
反射调用的时候,使用spring的代理类
这样其实这个wearver其实是被spring代理的,从debug模式下可以看到是被