网站建设分为哪些,自然堂网站建设情况,域名注册商有哪些,网站建设研究课题目录
1.什么是Aop
2.相关概念
3.相关注解
4.为什么要用Aop
5.Aop使用案例 1.什么是Aop
AOP#xff1a;Aspect Oriented Programming#xff0c;面向切面#xff0c;是Spring三大思想之一#xff0c;另外两个是
IOC-控制反转
DI-依赖注入 (Autowired、Qualifier、Re…目录
1.什么是Aop
2.相关概念
3.相关注解
4.为什么要用Aop
5.Aop使用案例 1.什么是Aop
AOPAspect Oriented Programming面向切面是Spring三大思想之一另外两个是
IOC-控制反转
DI-依赖注入 (Autowired、Qualifier、Resource) 2.相关概念
切面(aspect)横切面对象,一般为一个具体类对象(可以借助Aspect声明)可以理解为要植入的新的业务功能这个功能交给某个类负责,这个类就是切面。切入点(pointcut)对连接点拦截内容的一种定义在原有的哪些业务方法上扩展新的业务,可以将切入点理解为方法的集合可以是1个类或某些类。连接点(joinpoint)程序执行过程中某个特定的点一般指被拦截到的的方法可以简单理解为切入点中的一个具体方法。通知(advice)拦截到连接点之后只要执行的方法可以理解为一个业务中的扩展逻辑的若干步骤先做什么(before),再做什么(afterReturn),最后做什么。目标对象(target)封装原业务逻辑的对象。代理对象(proxy)负责调用切面中的方法为目标对象植入新的功能。
3.相关注解
Pointcut定义切入点Before目标方法执行之前执行After目标方法执行之后必定执行无论是否报错AfterReturning目标方法有返回值且正常返回后执行AfterThrowing目标方法抛出异常后执行Around可以获取到目标方法的入参和返回值
4.为什么要用Aop
举个例子假设我们有一个新增数据和一个删除数据的功能。
可能之前的逻辑是
开始-鉴权-新增数据-记录操作日志-结束
开始-鉴权-删除数据-记录操作日志-结束
借助Aop我们就可以实现 另外在以下场景也可以借助Aop
系统日志处理、系统事务处理、系统安全验证、系统数据缓存等
5.Aop使用案例
先看一个简单的例子就是通过execution表达式来定义某个包小的所有方法为切入点
第一个 * 符号表示返回值的类型任意com.aop.service即需要进行横切的业务包包名后面的 .*表示当前包下面的类.*(..)表示任何方法名括号表示参数两个点表示任何参数类型
Aspect
Component
Slf4j
Order(10)
public class AopAdvice {Before(execution (* com.erich.yand.service.console.day.end.*.*(..)))public void beforeAdvice() {log.info(beforeAdvice...);}After(execution (* com.erich.yand.service.console.day.end.*.*(..)))public void afterAdvice() {log.info(afterAdvice...);}Around(execution (* com.erich.yand.service.console.day.end.*.*(..)))public void aroundAdvice(ProceedingJoinPoint proceedingJoinPoint) {log.info(before);try {proceedingJoinPoint.proceed();} catch (Throwable t) {t.printStackTrace();}log.info(after);}
}
当有多个切面时Order越小越先执行。
执行后可以看到结果 说明执行到我们定义的包下的方法时确实切进来了~~
以上就是Aop的一个简单案例了具体如何使用他还需要根据实际的业务场景来拓展~~