2 hqshaozhu hqshaozhu 于 2017.01.08 02:02 提问

Spring如何实现针对非单例的Controller进行AOP代理 10C

Controller设置为了prototype的,非单例,一版AOP是在bean初始化时创建代理类,但是非单例bean,会在每次请求时都创建一个新的对象,导致AOP失效,请问有没有好的办法解决

6个回答

baidu_36779925
baidu_36779925   2017.01.08 08:42

session。是每次会话 创建一个。

JE_GE
JE_GE   2017.01.08 09:57

非单例bean是struts2框架吗?

hqshaozhu
hqshaozhu   2017.01.08 13:40

SpringMVC的,由于某种特殊原因不是使用单例

JE_GE
JE_GE   2017.01.08 14:52

aop里面如果类没有接口,要实现aop,必须使用cglib进行拦截

JE_GE
JE_GE   2017.01.08 14:54

需要添加proxy-target-class="true",表示对实现类进行代理

JE_GE
JE_GE 回复少主无翼: struts2的action,都拦截过没有问题哦
11 个月之前 回复
hqshaozhu
hqshaozhu 我知道,关键是我的controller是prototype(非单例),每次有请求过来都会new一个新的controller对象,导致只有第一次AOP能够拦截到,后续的都无法拦截
11 个月之前 回复
sycdzdd
sycdzdd   2017.01.09 10:35

prototype每次也是重新进行getbean-》。。。getAopProxyFactory().createAopProxy(this)-》。。。织入代理逻辑,试了一下,每次都是可以拦截的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!