springBoot AOP切面编程
生活随笔
收集整理的這篇文章主要介紹了
springBoot AOP切面编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AOP?為?Aspect?Oriented?Programming?的縮寫,意為?面向切面編程。AOP?為spring?中的一個重要內容,它是通過對既有程序定義一個切入點,然后在其前后切入不同的執行內容。
AOP?不會破壞原有程序的邏輯,很好的和業務邏輯進行隔離,耦合度低。
常用比如AOP?的日志記錄。
1.pom加入AOP依賴包
<!--AOP切面 start--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!--AOP切面 end-->2.建立LogAspect?類,該類必須在?主程序的掃包范圍內
@Aspect @Component @Slf4j public class LogAspect {@Pointcut("execution(public * 掃包路徑..*.*(..))")public void LogHelp() {}@Pointcut("execution(public * 掃包路徑..*.*(..))")public void LogErrorHelp() {}@Before("LogHelp()")public void doBefore(JoinPoint joinPoint) throws Throwable {// 接收到請求,記錄請求內容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 記錄下請求內容System.out.println("URL : " + request.getRequestURL().toString());System.out.println("HTTP_METHOD : " + request.getMethod());System.out.println("IP : " + request.getRemoteAddr());System.out.println("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());System.out.println("ARGS : " + Arrays.toString(joinPoint.getArgs()));}@AfterReturning(returning = "ret", pointcut = "LogHelp()")public void doAfterReturning(Object ret) throws Throwable {// 處理完請求,返回內容System.out.println("方法的返回值 : " + ret);}@AfterThrowing("LogErrorHelp()")public void doAfterThrowing(JoinPoint jp) {System.out.println("方法異常時執行.....");System.out.println(jp.toString());} }//end?
轉載于:https://www.cnblogs.com/hcfan/p/9888413.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的springBoot AOP切面编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 学习系列(09)
- 下一篇: Spring Boot2.0之 整合Re