spring 拦截器

2到20个英文 2009-12-25 12:41:08

public class MethodAfterInterceptor implements AfterReturningAdvice
{

public void afterReturning(Object value, Method method, Object[] arg2,
Object instance) throws Throwable
{
//请问下,这里为什么会打印三次??
System.out.println("方法名: " + method.getName() + "返回值为:" + ((CMSServiceResp)value).getResult());
}
}


配置文件


<!-- 拦截 delContent(),modifyContent() -->
<bean id="aopMethodAfterInterceptor"
class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="advice">
<bean
class="com.XXX.imp.sv.business.content.service.MethodAfterInterceptor" />
</property>
<property name="mappedNames">
<value>delContent,modifyContent</value>
</property>
</bean>

<!-- Service对象,安装到ProxyFactoryBean对象中 -->
<bean id="aopService"
class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 拦截器 -->
<property name="interceptorNames">
<list>
<value>aopMethodAfterInterceptor</value>
</list>
</property>
<!-- 被拦截的对象 -->
<property name="target">
<bean class="com.XXX.imp.sv.business.content.service.impl.ContentManageServiceImpl">
</bean>
</property>
</bean>


调用

ApplicationContext applicationContext = WebApplicationContextManager.getApplicationContext();
ContentManageService contentManageService= (ContentManageService)applicationContext.getBean("aopService");

contentManageService.delContent("123", "1","cpid=123");

为什么afterReturning方法会调用三次??
我这里不能上网,只能上csnd,麻烦大家看下,谢谢啦
...全文
171 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
方法名: delContent返回值为:1
方法名: delContent返回值为:1
方法名: delContent返回值为:1
youqiong 2009-12-25
  • 打赏
  • 举报
回复
输出堆栈看看.调用过程
islandrabbit 2009-12-25
  • 打赏
  • 举报
回复
学习!
zl3450341 2009-12-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hedangqing 的回复:]
呵呵,问题解决了,是由于和公司框架有些冲突
有时间再去研究为什么,
谢谢大家了

[/Quote]

...是说啥原因呢
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
呵呵,问题解决了,是由于和公司框架有些冲突
有时间再去研究为什么,
谢谢大家了
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
早试过了只有一次

ContentManageService contentManageService= (ContentManageService)applicationContext.getBean("aopService");

contentManageService.delContent("123", "1","cpid=123");//把这句删除就不进那方法了,说明只在此处调用了一次

//在此作了个标记,看此方法是否进来了三次,但作标记只打印了一次,说明此方法也只进来了一次


不懂为什么呢
可能是人品不好吧
道光2008 2009-12-25
  • 打赏
  • 举报
回复
你在方法体中设置一个System.out看看是否执行了3次方法。
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
help me
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
其它地方肯定是没有调用的,刚写的一个新的
就上面调用了一次
jarvis_java 2009-12-25
  • 打赏
  • 举报
回复
你这个是 事后通知 ,被打印3次, 首先应该想到这个方法进来了三次。
你看下你其它地方有没被调用 ,调用一次只会打印一次的
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
公司设置了代理滴
只能上这个

其它上不了

发个贴子,麻烦大家看下,谢谢了
道光2008 2009-12-25
  • 打赏
  • 举报
回复
我这里不能上网,只能上csnd,
csdn不是在网上的吗?你的帖子怎么发出来的。
2到20个英文 2009-12-25
  • 打赏
  • 举报
回复
麻烦大家帮忙看看,谢谢了

67,517

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧