Spring Aop

什么是Aop?

Aop:Aspect Oriented Programming:面向切面编程,是对OOP思想的一种补充. 本质上就是利用动态代理技术,去对现有功能进行扩充的一种方式. 横切技术. OOP:面向对象编程:纵向扩张,AOP;横向扩张;

解决共性问题:比如:权限管理 日志记录 验证 事务操作

Aop术语:

Aspect: 切面; 公共模块; 对应的类
Advice: 通知(增强), 切面中的方法 ;要扩展的功能;
Join Point:连接点,通知要接入的业务系统的方法
Pointcut :切入点,对一系列连接的描述(表达式)
切入点表达式举例:

通知分类

Before advice:前置通知, 在连接点对应的业务方法之前执行的功能.
After returning advice:正常返回通知,在连接点对应的业务方法正常执行后执行的功能;如果发生异常,该通知不执行.
After throwing advice: 异常通知,在连接点对应的业务方法发生异常时执行的通知.如果不发生异常,不执行;
After (finally) advice:后置(最终)通知,连接点对应的业务方法,无论是否发生异常,该通知都会执行.
Around advice: 环绕通知.

常用切入点:
以下示例显示了一些常见的切入点表达式:
执行任何公共方法

execution(public * *(..))

执行名称以以下开头的任何方法 set

execution(* set*(..))

执行 AccountService 接口定义的任何方法

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

执行 service 包中定义的任何方法

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

执行服务包或其子包中定义的任何方法

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

服务包中的任何连接点(仅在Spring AOP中执行方法)

within(com.xyz.service.*)

服务包或其子包中的任何连接点(仅在Spring AOP中执行方法)

within(com.xyz.service..*)

代理实现 AccountService 接口的任何连接点(仅在Spring AOP中执行方法)

this(com.xyz.service.AccountService)

目标对象实现 AccountService 接口的任何连接点(仅在Spring AOP中执行方法)

target(com.xyz.service.AccountService)

aop实现原理分析

  • jdk动态代理
  • cglib代理

基于xml的方式实现aop

基于注解的方式实现aop
1、开启注解

<aop:aspectj-autoproxy/>

2、在切面类中配置相应的注解:

@Aspect
@Component

注意:异常和环绕不能一块出现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值