spring AOP 拦截器实现问题

自学AOP拦截器,遇到点问题。如果在调用一个方法之前拦截这个方法并记录下来,需要实现beforeMethod什么接口,然后还需要在ApplicationContext.x... 自学AOP拦截器,遇到点问题。如果在调用一个方法之前拦截这个方法并记录下来,需要实现beforeMethod什么接口,然后还需要在ApplicationContext.xml里进行配置,相关配置文件较多,拦截的方法多需要配置的也就越多,听说可以用注释的方法实现,但不知道怎么注释,求高手指点 展开
 我来答
hhxlyl
推荐于2016-01-25 · TA获得超过392个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:435万
展开全部
创建拦截类:
@Aspect
public class MyAspect{
    
     /** 执行前拦截 */
@Before("execution(* t.t..service.*Service.*(..))")
public void before(JoinPoint point) throws Throwable {
System.out.println("执行方法:" + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName());
}

/** 执行后拦截 */
@After("execution(* t.t..service.*Service.*(..))")
public void after(JoinPoint point) throws Throwable {
System.out.println("执行完成:" + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName());
}

/** 执行前后拦截(环绕) */
@Around("execution(* cn.cydl.dlj..service.*Service.*(..))")
public Object around(ProceedingJoinPoint point) throws Throwable {
System.out.println("执行前...");
// 这里相当于@Before
Object obj = point.proceed();// 调用方法具体执行过程,如果不调用,这原来的方法就不会执行了
// obj问原来的方法返回值,如果不返回obj,则原来的方法即时有return也不会返回任何值
// 这里相当于@After
System.out.println("执行后...");
return obj;
}
}

 

applicationContext.xml中
引入AOP支持(头部,请自行补完整,这里不能写html地址):
xmlns:aop="...ingframework.org/schema/aop" 

xsi:schemaLocation="...
...ingframework.org/schema/aop
...ingframework.org/schema/aop/spring-aop-3.2.xsd
"

具体AOP配置:
<!-- AOP配置 -->
<aop:aspectj-autoproxy />
<!-- 指定AOP拦截的Bean(主动指定上面的类) -->
<bean class="t.t.t.MyAspect" />

 

需要Spring核心、SpringAOP和aspectjrt、aspectjweaver等包支持。

qwe奋斗2014
2014-07-11
知道答主
回答量:37
采纳率:0%
帮助的人:15.6万
展开全部
方法
方法
方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式