第一步 注入sprootbootAOP依赖
compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: '2.2.6.RELEASE'
第二步 在ressoutces.groovy 配置映射路径
beans = {
xmlns aop:"http://www.springframework.org/schema/aop"
dataLogAop(DataLogAop)
aop.config("proxy-target-class":true) {}
}
第三 配置需要记录的函数名
package rzj.iot.cloud.aop
import org.aspectj.lang.JoinPoint
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Before
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
import org.springframework.web.context.request.RequestContextHolder
import org.springframework.web.context.request.ServletRequestAttributes
import rzj.iot.cloud.system.DataLogService
import rzj.iot.cloud.utils.HttpWebUtilsController
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import javax.servlet.http.HttpSession
@Aspect
@Component
class DataLogAop {
private final static Logger logger = LoggerFactory.getLogger(DataLogAop.class);
@Autowired
DataLogService dataLogService;
@Pointcut("execution(* rzj.iot.cloud.dhapp.AccountOpeningController.*(..))")
public void test(){
}
@Before("test()")
public void doBefore(JoinPoint joinPoint){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
HttpSession session = HttpWebUtilsController.getHttpSession() as HttpSession
println session
System.out.println("url: {}"+ request.getRequestURL());
System.out.println("ip: {}" + request.getRemoteHost());
System.out.println("port: {}" + request.getRemotePort());
System.out.println("method: {}" + request.getMethod());
System.out.println("parameterMap:{}"+request.getParameterMap());
获取类和方法
System.out.println("class method: {}" + joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
System.out.println("args: {}" + joinPoint.getArgs());
System.out.println(joinPoint.getArgs());
System.out.println("=========doBefore===========");
}
@After("test()")
public void doAfter(){
System.out.println("=========after===========");
}
@AfterReturning(returning = "object", pointcut = "test()")
public void afterReturn(Object object){
System.out.println(object);
System.out.println("===============AfterReturning=============");
}
}