Skip to content

🍍🍍注解式自定义请求/方法拦截🍍🍍

🍌🍌介绍

Acri(全称Annotation Custom Request Interception)

一个注解即可实现请求的拦截处理或AOP增强

🍊🍊特点

  • 一个@Acri注解搞定请求拦截
  • 支持自定义拦截器,自定义扩展简单易用
  • 一个@AcriAspect注解搞定AOP切面
  • 支持自定义切面类、切面方法,自定义扩展简单易用
  • 支持单个方法单拦截
  • 支持单个方法多个拦截
  • 支持多方法多拦截
  • 不管是拦截还是切面,完全实现代码与业务分离

🫐🫐依赖

xml
<dependency>
    <groupId>cn.fntop</groupId>
    <artifactId>acri-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

implementation 'cn.fntop:acri-spring-boot-starter:1.3.0'
//方式2
implementation group: 'cn.fntop', name: 'acri-spring-boot-starter', version: '1.3.0'

🍈🍈使用方式

添加注解

java
@Acri(value = AcriStopWatchProcessor.class, before = true, during = true, after = true)
@GetMapping("/login")
public String login() {
    log.info("登录中");
    return "登录成功";
}

效果

🍐🍐注解说明

@Acri(value = AcriStopWatchProcessor.class, before = true, during = true, after = true)

配置项默认值备注
valuenull具体拦截处理器,实现AcriProcessor并注入Spring容器
beforefalse是否处理请求前执行doBefore方法
duringfalse是否处理请求方法后执行doDuring方法
afterfalse是否在返回响应后执行doAfter方法

@Acries(acries = {@Acri(value = AcriStopWatchProcessor.class, before = true, after = true) , @Acri(value = CustomProcessor.class, before = true, after = true)}) 如果存在@Acries注解,则@Acri注解不起作用

配置项默认值备注
acriesnull多@Acri拦截

🍉🍉自定义拦截

java
@Slf4j
@Component
public class CustomProcessor implements AcriProcessor {
    @Override
    public void doBefore(HttpServletRequest request, HttpServletResponse response, Object handler) {
        log.info("before");
    }

    @Override
    public void doDuring(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        log.info("doDuring");
    }
    @Override
    public void doAfter(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        log.info("doAfter");
    }
}

🍏🍏多拦截支持

java
@Acries(acries = {@Acri(value = AcriStopWatchProcessor.class, before = true, after = true)
            , @Acri(value = CustomProcessor.class, before = true, after = true)})
@GetMapping("/login")
public String login() {
    log.info("登录中");
    return "登录成功";
}

Last updated: