AOP

xiaoxiao2021-02-28  103

面向切面编程,使用AOP来处理请求

把某一过程的方法进行统一处理

比如需要验证登录后进行增删查改的操作,只需要添加AOP统一进行处理

1.添加AOP依赖

2.建立aspect包

@Aspect @Component public class HttpAspect { private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class); @Pointcut("execution(public * com.imooc.controller.GirlController.*(..))") public void log() { } @Before("log()") public void doBefore(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 doAfter() { logger.info("222222222222"); } @AfterReturning(returning = "object", pointcut = "log()") public void doAfterReturning(Object object) { logger.info("response={}", object.toString()); } } 进行拦截,注意标签的是使用,括号里面表明时拦截兰哪个方法

@Before指的是在之前拦截

@After同理

@Pointcut指名要切的位置,写一个公共的方法然后正在后面具体的实现功能

输出尽量使用log来输出

doBefore方法中展示了获取传入参数的方法

deAfterReturning展示了如果写入返回的数据

转载请注明原文地址: https://www.6miu.com/read-73852.html

最新回复(0)