AOP相关一
package com.example.demo.retry;
import com.example.demo.aop.RetryAnno;
import com.example.demo.aop.RetryUtil1;
import com.example.demo.aop.Task;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import java.util.UUID;
/**
* @describtion aop异常通知
* @creator wangli66
* @create-time 14:19 2019/11/21
**/
@Aspect
@Component
public class BizAspect {
/*
* @Description: 在注解中直接定义切点的方式
* @param: [e]
* @return: void
* @Date: 2019/11/26
*/
@AfterThrowing(throwing = "e",pointcut = "execution(* com.example.demo.retry.Bizwork.*(..))")
public void testThrowing(Exception e) {
System.out.println("aspect.........");
}
/*
* @Description: 单独定义切点
* @param: []
* @return: void
* @Date: 2019/11/26
*/
@Pointcut("execution(* com.example.demo.retry.Bizwork.*(..))")
public void workCut() {
}
/*
* @Description: 引入切点
* @param: [joinPoint]
* @return: void
* @Date: 2019/11/26
*/
@AfterThrowing("workCut()")
public void testPointCut(JoinPoint joinPoint) {
System.out.println("testPointCut.......");
Task task = new Task();
// 设置参数
task.setTargetClass(joinPoint.getSignature().getDeclaringTypeName());
task.setTargetMethod(joinPoint.getSignature().getName());
task.setArgs(joinPoint.getArgs());
task.setTimes(3);
task.setWaitTime(3000L);
// 调用重试工具类
RetryUtil1.retryByTask(task);
}
/*
* @Description: 使用自定义注解方式
* @param: []
* @return: void
* @Date: 2019/11/26
*/
@Pointcut(value = "@annotation(com.example.demo.aop.RetryAnno)")
public void testAnnoCut() {
}
/*
* @Description: 注解方式
* @param: [joinPoint]
* @return: void
* @Date: 2019/11/21
*/
@AfterThrowing(value = "@annotation(com.example.demo.aop.RetryAnno) && @annotation(retryAnno)")
public void testAnnotion(JoinPoint joinPoint,RetryAnno retryAnno) {
System.out.println("----注解方式------------------------"+retryAnno.maxAttempt());
Task task = new Task();
// 设置参数
task.setTargetClass(joinPoint.getSignature().getDeclaringTypeName());
task.setTargetMethod(joinPoint.getSignature().getName());
task.setArgs(joinPoint.getArgs());
task.setTimes(retryAnno.maxAttempt());
task.setWaitTime(retryAnno.waitDesc());
// 调用重试工具类
RetryUtil1.retryByTask(task);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统