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,都拦截过没有问题哦
一年多之前 回复
hqshaozhu
hqshaozhu 我知道,关键是我的controller是prototype(非单例),每次有请求过来都会new一个新的controller对象,导致只有第一次AOP能够拦截到,后续的都无法拦截
一年多之前 回复
sycdzdd
sycdzdd   2017.01.09 10:35

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spring aop同时代理service层和controller层的问题
再说spring aop同时代理controller和service之前,先讲一下代理service和代理controller的基本写法把。。。。 单一的代理service写法 applicationContext.xml 扫描切面--> context:component-scan base-package="com.yunhui.web.aop">conte
Spring AOP代理controller类
1、关于Java动态代理
Spring AOP代理Controller层
基础学的不扎实,面试时被虐惨了..回来狂抓基础了.. 看到spring Aop这块想优化下以前项目的代码,网上看了半天,各种案例,试了又试,没什么效果,说扫描包第一次扫描后,第二次就不会扫描了,所以Aop不会起效..(熟悉Jvm会懂的..) 网上寻它千百度,重要在google搜素时看到个提问,试试了下有用!(在这里不得不吐糟下百度了..) http://stackoverflow.com/qu
Spring的AOP实现使用的JDK的动态代理必须使用接口
今天,在项目中遇到一个问题,情况是这样的:在一个项目中,我配置了一个用以处理任务的工厂类,然后将这个工厂类注入到其他的service类中进行使用。在Spring中的配置如下:
SpringMvc的controller是singleton的(非线程安全的)
springmvc的controller是singleton的(非线程安全的),这也许就是他和struts2的区别吧 和Struts一样,Spring的Controller默认是Singleton的,这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:一是我们不用每次创建Controller,二是减少了对象创建和垃圾收集的时间;由于只有一个Controll
spring aop拦截Controller做参数校验
在项目中,我们会对入参做校验,这些参数的校验逻辑我们会写很多次.能不能将这些参数的校验逻辑提出来呢?答案是可以.Spring 有自己的validate工具方法,我个人感觉不是太好远,想自己定制更加契合自己项目的校验机制.经过哆哆嗦嗦的研究,有点结果,现在贴出来,大家一起看看!        我曾经写过一个工具类,就是会在Service层的方法上加上自定义的注解,利用Spring aop拦截标注注
使用Spring AOP对url参数进行解密以及对返回结果进行加密
基本做法是在controller层和service层加上AOP,选用环绕模式,方法运行之前进行解密,方法返回结果后,对结果进行加密。 小经验: 1. SQL的参数都可以设置成String类型,这样操作方便,而且不会影响实际的数据库操作。 2. 不要忘了把AOP的类也注册为Bean,建议用注解的方式。
Spring AOP中的动态代理实现机制
AOP中的目标对象(target object),也被称为是advised object,是在pointcut处插入aspect时所执行的advice方法中所用到的对象。有点罗嗦,请慢慢体会。任何一个target object都是通过动态代理机制创建的,以实现在运行时被动态插入。本文介绍Spring AOP中的动态代理实现机制,即介绍创建target object的机制。Spring AOP中的动...
Spring AOP 应用 - 打印 Action (Controller )层的日志信息
目的:通过 Spring 的 AOP 特性,对所有的 Action (Controller )层增加前置通知,以观察前台如何请求后台数据(可以看到请求顺序、参数分别是什么)。所用技术: AOP 、slf4j(log4j)
SpringAop 类代理模式与接口代理模式
前两天在学习Spring的切面编程,利用@EnableAspectJAutoProxy标签开启切面。却始终得不到想要的结果。不多说,直接上demo代码。 spring配置类 package com.xwh.cofig; import org.springframework.beans.factory.annotation.Autowired; import org.springframe