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匹配的方法中。


※Promise實現原理
※打包優化實踐(如何Code Spliting)
TAG:程序員小新人學習 |