一.引入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);
}
}
|