一.引入pom配置
<!-- spring boot aop --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> |
二.创建切面类 HttpAspect
@Aspect @Component public class HttpAspect { private final static Logger logger = LoggerFactory.getLogger(HttpAspect. class ); @Pointcut ( "execution(public * com.grus.controller.CourseController.*(..))" ) //课程controller里的任何方法都会被拦截 public void log(){ } @Before ( "log()" ) public void before(JoinPoint joinPoint){ ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //url logger.info( "url={}" ,request.getRequestURL()); //method logger.info( "method={}" ,request.getMethod()); //ip logger.info( "ip={}" ,request.getRemoteAddr()); //类方法 logger.info( "class_method={}" , joinPoint.getSignature().getDeclaringTypeName()+ "," +joinPoint.getSignature().getName()); //参数 logger.info( "args={}" ,joinPoint.getArgs()); } @After ( "log()" ) public void after(){ logger.info( "2222222" ); } //获取方法返回的内容,通过object接收 @AfterReturning (returning = "obj" ,pointcut = "log()" ) public void doAfterReturning(Object obj){ logger.info( "response={}" ,obj); } }
|