中国站长查询域名备案,怎么看一个网站谁做的优化,成都必去的10个景点,做同城网站赚钱Spring aop切面编程 如何使用利用AuditAction创建切入点 如何使用
Aspect // 1. 创建一个类#xff0c;用Aspect注解标记它#xff0c;表明这是一个切面类。
Component
public class LoggingAspect {// 2. 定义切点#xff1a;在通知方法上#xff0c;使用切点表达式来指定… Spring aop切面编程 如何使用利用AuditAction创建切入点 如何使用
Aspect // 1. 创建一个类用Aspect注解标记它表明这是一个切面类。
Component
public class LoggingAspect {// 2. 定义切点在通知方法上使用切点表达式来指定哪些方法将被拦截。// 切点表达式定义了你的通知将应用于哪些方法。Pointcut(execution(* com.example.service.*.*(..)))public void serviceLayer() {}// 3. 定义通知在切面类中定义你的通知方法前置通知、后置通知、返回后通知、异常通知、环绕通知// 并使用相应的注解Before、After、AfterReturning、AfterThrowing、Around标记。Around(serviceLayer())// ProceedingJoinPoint对象是JoinPoint的子接口,该对象只用在Around的切面方法中public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {Object proceed joinPoint.proceed(); // 执行目标方法return proceed;}
}通知是根据其类型在切点指定的连接点Join point的内容执行的特定时间点执行的主要的通知类型及其执行时机
前置通知Before advice在切点指定的方法执行之前执行。后置通知After advice在切点指定的方法执行之后执行无论方法执行成功还是异常结束。⚠️ after注解的通知方法会在finally里一定会执行。返回后通知After-returning advice在切点指定的方法成功执行之后执行。异常后通知After-throwing advice在切点指定的方法抛出异常后执行。环绕通知Around advice在切点指定的方法执行前后都可以执行甚至可以决定是否执行目标方法。
如果切点已有可以隐式定义切点
After(value execution(public * mapper.*.delete*(..)))
// 切点mapper目录下的所有的delete开头的public方法public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {Object proceed joinPoint.proceed(); // 执行目标方法return proceed;}利用AuditAction创建切入点
AuditAction 注解用于标记在需要进行审计日志记录的方法上通过指定操作类型和目标表来描述该方法的行为。这种标记方式为 AOP 提供了一个“切入点”Pointcut使得 AOP 可以识别出哪些方法需要进行特定的处理。
假设有一个切面 ChangeLogAop它通过 AOP 拦截所有标记了 AuditAction 的方法并根据注解中的信息执行相应的日志记录操作
Aspect
Component
public class ChangeLogAop {// 拦截标记了 AuditAction 注解的方法After(value annotation(auditAction), argNames joinPoint,auditAction)public void doAudit(JoinPoint joinPoint, AuditAction auditAction) {// 根据 auditAction 中的信息如操作类型和目标表执行日志记录等操作}
}