`

Spring AOP annotation 拦截表达式 分析

 
阅读更多

在app.xml中要加入aop的命名空间,看

http://static.springsource.org/spring/docs/2.0.x/reference/aop.html#aop-ataspectj

 

然后开启aop

<aop:aspectj-autoproxy />

 

在定义AOP的类中,要写@Aspect,表示这是个切面

还要加上@Component,让此aop交给Spring 管理

 

1、

 @Pointcut("execution(* com.mhm.mng.impl..*.*(..))")

 第一个*表示 返回类型

如果写成java.lang.String 则表示只对com.mhm.mng.impl 下的类以及子包下的类和方法进行拦截

*.*表示 类下面的方法

(..)表示方法中的参数随意

 

2、

 com.mhm.mng.impl..*(..) 

 表示对com.mhm.mng.impl下的类以及子包下的类进行拦截

 

3、

com.mhm.mng.impl.PersonalMngimpl.*(..) 

表示对表示对com.mhm.mng.impl下的PersonalMngimpl的所有方法进行拦截

 

4、

方法参数:

 @Pointcut("execution(* com.mhm.mng.impl..*.*(java.lang.String, ..))")

 表示如果方法第一个参数为String类型,第二个参数可有可无

 

 

5、拦截所有的返回值不是 void的方法

@Pointcut("execution(!void com.mhm.mng.impl..*.*(java.lang.String, ..))")
分享到:
评论
1 楼 tomfish88 2012-05-17  
比如我要拦截不同业务的service类里面的方法 
@Pointcut("execution(* *Service.*(..))")    我这样写怎么不好用呢

相关推荐

Global site tag (gtag.js) - Google Analytics