Spring AOP编程

Spring AOP编程


#AOP概念

 Aspect Oriented Programming

 面向切面编程

 Object Oriented Programming

 面向对象编程

 AOP是以OOP为基础,可以将共通业务和传统业务解耦,利用配置指定作用关系。

 AOP使用时机:共通处理;调用时机相同

#切面(Aspect)

  切面就是提取出来的共通的业务处理逻辑可以通过配置作用到其他

  目标组件方法上(在Spring容器中,切面组件可以往其他的Bean组件上作用)

#切入点(Pointcut)

用于指定哪些组件或方法是切入目标,在Spring中是通过一个切入点表达式指定。

  ##类型限定表达式

    within(类型)

    within(org.service.UserService)

    //匹配org.service包下所有类的方法

    within(org.service.*)

    //匹配org.service包及子包下所有类的方法

    within(org.service..*)

  ##方法限定表达式

    execution(修饰符? 返回类型 方法名(参数)抛出异常?)

    //匹配UserService.checkLogin方法

    execution(* org.service.UserService.checkLogin(..))

    //匹配所有Bean中load开头的方法

    execution(* load*(..))

    execution(* org.service.*.*(..))

    execution(* org.service..*.*(..))


  ##Bean名称限定表达式

    bean(Bean组件的id名)

    //匹配Spring容器中id=userService的组件所有方法

    bean("userService")

    //匹配所有以Service结尾的Bean组件

    bean("*Service")

#通知(Advice)

指定切面切入目标组件方法的时机。

Spring提供了以下类型

--前置通知<aop:before>

--后置通知<aop:after-returning>

--最终通知<aop:after>

--环绕通知<aop:around>

--异常通知<aop:after-throwing>


try{
    执行切面组件处理-前置通知
    //目标组件方法
    执行切面组件处理-后置通知
}catch(){
    执行切面组件处理-异常通知
}finally{
    执行切面组件处理-最终通知
}

#目标(Target)

切入点指定的组件就是目标。
要追加功能的组件

#动态代理(AutoProxy)


切面:要追加啥功能?
切入点:要给谁追加功能?
通知:啥时候追加功能?




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值