spring-aop

1.1  AspectJ(掌握)

1.1.1   介绍

l  AspectJ是一个基于Java语言的AOP框架

l  Spring2.0以后新增了对AspectJ切入点表达式支持

l  @Aspect 是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面

l  建议:新版本Spring框架,建议使用AspectJ方式来开发AOP

 

1.1.2   导入jar

aop联盟定义规范:com.springsource.org.aopalliance-1.0.0.jar

spring aop实现:spring-aop-3.2.0.RELEASE.jar

AspectJ 规范:com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

spring 对 AspectJ支持:spring-aspects-3.2.0.RELEASE.jar

 

 

 

1.1.3   AspectJ的表达式(★★★★★)

execution:匹配方法的执行(常用)

       execution([注解] [修饰符] 返回类型  包结构.类名.方法名(参数列表) [异常] )

              注解:可选,表示拦截方法必须添加指定的注解。

                     例如:@java.lang.Deprecated

              修饰符:可选,表示方法修饰符。

                     例如:public

              返回类型:表示返回类型。

                     例如:* 表示返回类型任意【】

              包结构:表示类所在的位置。

                     例如:cn.itcast.*.service..  ,表示所在包cn.itcast.任意.service当前包及子包

              类名:表示类的名称。

                     例如:* 表示所有的类;*Dao 表示所有Dao结尾的类

              方法名:表示类中的方法。注意必须手动添写括号()

                     例如:* 表示所有的方式; add* 表示方法必须以add开头

              参数列表:指定方法的参数列表

                     例如:java.lang.String 只有一个参数字符串; .. 参数任意

              异常:可选,表示方法抛出的异常类型

                     例如:java.lang.RuntimeException 使用的运行时异常

              综合案例:execution(*cn.itcast.crm.*.service..*.*(..))

 

within:匹配包或子包中的方法(了解)

       within(cn.itcast.aop..*)

this:匹配实现接口的代理对象中的方法(了解)

       this(cn.itcast.aop.user.UserDAO)

target:匹配实现接口的目标对象中的方法(了解)

       target(cn.itcast.aop.user.UserDAO)

args:匹配参数格式符合标准的方法(了解)

       args(int,int)

bean : 匹配指定的bean  (<bean id="bean名称">) (了解)

       bean("bean名称")

 

1.1.4   AspectJ 通知(增强)类型

l  AspectJ提供 6种通知类型,常用5种,重要一种。

       before表示前置通知。切入点执行前。(目标类的指定方法)

              常用案例:数据校验。

       afterReturning表示后置通知。切入点执行后。

              常用案例:数据处理。可以获得返回值

       around           表示环绕通知【重要】。切入点执行的前和后。

              常用案例:统计、性能检测、事务

       afterThrowing表示抛出通知。切入点执行时,如果发生异常。

              常用案例:日志记录

       after               表示最终通知。。切入点执行时,必须执行的。

              常用案例:清理数据等

      

环绕通知可以完成任意事情

try{

   //前置

   //执行目标方法(环绕通知具有的功能)

   //后置

} catch(){

   //异常抛出

} finally{

   //最终

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值