AOP面向切面

什么是AOP

AOP是Aspect Oriented Programming的缩写
Aspect表示切面,给业务方法增加的功能,叫做切面。切面一般都是非业务功能,而且切面功能一般都是可以复用的。例如日志功能,事务功能,权限检查,参数检查,统计信息等等
Oriented 面向
Programming 编程

AOP中的一些术语

Aspect:切面,指给业务方法增加的功能
JoinPoint:连接点,连接切面的业务方法,在这个业务方法执行时会同时执行切面的功能
Poingcut:切入点,是一个或多个连接点的集合,表示这些方法执行时都能增加切面的功能。。表示切面执行的位置(这里的位置不是指具体业务逻辑里执行切面的位置,是指哪些方法需要执行切面的位置)
target:目标对象,给哪个对象增加切面的功能,这个对象就是目标对象
Advice:通知(增强),表示切面的执行时间。在目标方法之前执行切面,还是目标方法之后执行切面

AOP中比较重要的三要素:Aspect,Pointcut,Advice。这三者的联系是:在Advice的时刻,在Pointcut的位置去执行Aspect

AOP是一个动态的思想。在程序运行期间创建代理,使用代理执行方法时,增加切面的功能。这个代理对象是存在于内存中的

AspectJ框架

AspectJ框架可以使用注解和xml配置文件两种方式 实现 AOP
Aspectj表示切面执行时间,用的通知(Advice)。 这个通知可以使用注解表示。
常用5个注解, 表示切面的5个执行时间, 这些注解叫做通知注解。
@Before : 前置通知
@AfterRetunring: 后置通知
@Around: 环绕通知
@AfterThrowing:异常通知(发生异常且没有被catch时会触发该通知)
@After:最终通知(无论有没有异常都会执行该切面,并且是最后执行的,类似try-catch-finally中的finally)

Pointcut 位置
Pointcut 用来表示切面执行的位置, 使用Aspectj中切入点表达式。
切入点表达式的官方语法是
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?namepattern(param-pattern)
throws-pattern?)

解释下:
modifiers-pattern] 访问权限类型
ret-type-pattern 返回值类型
declaring-type-pattern 包名类名
name-pattern(param-pattern) 方法名(参数类型和参数个数)
throws-pattern 抛出异常类型
?表示可选的部分

可能看着有点复杂,举个例子 我建了一个项目 结构如下
在这里插入图片描述
在切面类中我想让doSome方法执行的时候额外在控制台打印执行时间,那么就可以写一个方法来实现
在这里插入图片描述
这个表达式就完整的表示在doSome方法执行时会执行切面里的逻辑,我在里面就是很简单的打印了一个当前时间。表示在doSome方法什么时候执行的
(其实我写的execution表达式还可以再精简到execution(void doSome(String,Integer)) 因为上面介绍过带?的是可选的)
执行doSome方法控制台打印结果
在这里插入图片描述
这就是切面的简单使用。

execution表达式还可以使用通配符进一步简化表达式的编写

详细了解可以去网上搜下
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值