當前位置:
首頁 > 知識 > Spring Boot中使用AOP

Spring Boot中使用AOP

spring boot 中使用AOP,需要先在pom.xml中添加依賴:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
1
2
3
4

然後編寫切面程序,例如:

@Aspect
@Component
public class HttpAspect {

private static final Logger logger=LoggerFactory.getLogger(HttpAspect.class);

//配置切點
@Pointcut("execution(public * com.springboot.controller.GirlController.*(..))")
public void log(){
}

//joinPoint用於獲取域切入點方法有關的信息
@Before("log()")
public void doBefore(JoinPoint joinPoint){
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request=requestAttributes.getRequest();
//url
logger.info("url={}",request.getRequestURL());
//method
logger.info("method={}",request.getMethod());
//ip
logger.info("ip={}",request.getLocalAddr());
//類方法
logger.info("class_method={}",joinPoint.getSignature().getDeclaringType()+"."+joinPoint.getSignature().getName());
//方法參數
logger.info("args={}",joinPoint.getArgs());
}

@After("log()")
public void doAfter(){
logger.info("doAfter={}",2222222);
}

//得到response返回的數據,returning代表切入點方法返回的數據
@AfterReturning(returning = "object",pointcut = "log()")
public void doAfterReturning(Object object){
logger.info("response={}",object.toString());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

需要在類上添加@Aspect註解表明這是一個切面,添加@Component註解是為了能夠讓spring的bean容器對齊進行管理,@Pointcut定義切入點,@Befor,@After,等註解定義連接點,被這些註解的方法作為Advice(通知)織入pointcut匹配的方法中。

Spring Boot中使用AOP

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Promise實現原理
打包優化實踐(如何Code Spliting)

TAG:程序員小新人學習 |