码迷,mamicode.com
首页 > 其他好文 > 详细

Aop编程

时间:2017-02-02 18:27:54      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:字符   下载   语法   关注   面向   开头   ice   throw   nts   

概述:

Aop  aspect object programming  面向切面编程

         功能: 让关注点代码与业务代码分离!

关注点,

         重复代码就叫做关注点;

切面,

          关注点形成的类,就叫切面(类)!

          面向切面编程,就是对很多功能中有的重复的代码进行抽取,再在运行的时候往业务方法上动态植入“切面类代码”。

切入点,

         执行目标对象方法,动态植入切面代码。

         可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。


1、切入点表达式

切入点表达式,

         可以对指定的“方法”进行拦截;  从而给指定的方法所在的类生层代理对象。

      在下载的源文件的api中找到如下语法:

  Spring AOP users are likely to use the execution pointcut designator the most often. The format of an execution expression is:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)
          throws-pattern?)

modifiers-pattern:修饰符   ?:问号表示0个或1个  ret-type-pattern:返回值类型(*:表示任意类型) declaring-type-pattern:声明类型   name-pattern:方法名称

如下

1、拦截所有公有方法

execution(public * *(..))

2、拦截所有的set开头的方法

execution(* set*(..))

 3、拦截某个类的所有方法

execution(* com.xyz.service.AccountService.*(..))

 4、拦截com.xyz.service包机器子包下的所有方法

execution(* com.xyz.service..*.*(..))

 5、多个表达式(拦截多个方法)

<aop:pointcut expression="execution(* com.gqx.g_pointcut.UserDao.save(..) ) || execution(* com.gqx.g_pointcut.OrderDao.save(..) )" id="pc"/>

 或者

<aop:pointcut expression="execution(* com.gqx.g_pointcut.UserDao.save(..) ) or execution(* com.gqx.g_pointcut.OrderDao.save(..) )" id="pc"/>

 如果是且关系,字符的话要转移"&amp;&amp;"或者直接用and;但要注意这在逻辑上没有任何意义;

6、取非值,加上“!”

<aop:pointcut expression="!execution(* com.gqx.g_pointcut.UserDao.save(..) ) || execution(* com.gqx.g_pointcut.OrderDao.save(..) )" id="pc"/>

 如果想让两个方法都不执行,也可这样写

<aop:pointcut expression="!execution(* com.gqx.g_pointcut.UserDao.save(..) ) and not execution(* com.gqx.g_pointcut.OrderDao.save(..) )" id="pc"/>

 

Aop编程

标签:字符   下载   语法   关注   面向   开头   ice   throw   nts   

原文地址:http://www.cnblogs.com/helloworldcode/p/6361413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!