Spring AOP介绍 Spring AOP使用方法

概念

AOP Aspect Oritened Programming 被称为面向切面编程。

OOP Object Oritened Programming 被称为面向对象编程。

面向对象编程侧重点为对象;面向切面编程侧重点为切面。

在大量组件中寻找时间、地点、逻辑相同的层面。比如Dao所有方法前开启事务、Controller所有方法后xxxx。

面向切面编程是以面向对象编程为基础,考虑将共通业务处理进行隔离,独立封装,之后通过SpringAOP配置方式作用。

AOP优点:将传统业务和共通业务代码进行解耦。例如事务控制、权限控制、日志记录等。

1.切面组件(Aspect Bean)

封装共通处理的组件,将来会通过配置动态作用到其他业务组件方法上的功能。(要追加什么功能?)

2.切入点(pointcut)

用于指定哪些业务组件方法追加切面组件功能。Spring提供了多种切入点表达式,例如方法表达式、类型表达式、组件名称表达式等。(给谁加功能?)

  • 方法表达式
    execution(修饰符? 返回类型 方法名(参数) 抛出异常?)
    注释:带问号表示不是必有参数
//匹配容器中所有bean中find开头的方法
execution(* find*(..))

//匹配DeptSerive组件中find开头的方法
execution(* cn.xdl.service.DeptSerive.find*(..))

//匹配cn.xdl.service包中所有类所有方法
execution(* cn.xdl.service.*.*(..))

//匹配cn.xdl.service包及子包中所有类所有方法
execution(* cn.xdl.service..*.*(..))
  • 类型表达式
    within(包名.类名)
//匹配DeptService组件所有方法
within(cn.xdl.service.DeptService)

//匹配cn.xdl.service包中所有类所有方法
within(cn.xdl.service.*)

//匹配cn.xdl.service包及子包中所有类所有方法
within(cn.xdl.service..*)
  • bean名称表达式
    bean(bean名字)
//匹配id=deptService的bean对象的所有方法
bean(deptService)

//匹配id以Service结尾的bean对象所有方法
bean(*Service)
  • 注解表达式
    @annotation(自定义注解的路径)
@annotation(com.testurl.test.annotation.AOPLog)

3.通知(Advice)

用于指定业务组件和切面组件作用的时机。例如业务组件方法前、方法后、异常发生后等类型。(什么时候加?)
Spring框架提供以下几种通知:

	try{ 
		//前置通知执行时机 
		//执行目标方法 
		//后置通知执行时机
	 }catch(){ 
	 	//异常通知执行时机 
	 }finally{
	 	 //最终通知执行时机 
	 }

前置通知 @Before: 在目标方法前加切面功能

  @Before("@annotation(com.testurl.test.annotation.AOPLog)")
    public void beforeLogAspect(){

    }

后置通知 @AfterReturning: 在目标方法后加切面功能(目标方法正常结束)

  @AfterReturning(value = "annoPointcut()")
   public void afterReturningLogAspect(){

   }

最终通知 @After: 在目标方法后加切面功能(目标方法正常或不正常结束)

  @After(value = "@annotation(com.testurl.test.annotation.AOPLog)")
    public void afterLogAspect(){

    }

异常通知 @AfterThrowing: 在目标方法抛出异常后加切面功能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值