Spring Boot中使用AOP
阿新 • • 發佈:2018-12-17
spring boot 中使用AOP,需要先在pom.xml中新增依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
然後編寫切面程式,例如:
@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()); } }
需要在類上新增@Aspect
註解表明這是一個切面,新增@Component
註解是為了能夠讓spring的bean容器對齊進行管理,@Pointcut
定義切入點,@Befor
,@After
,等註解定義連線點,被這些註解的方法作為Advice(通知)織入pointcut匹配的方法中。