首页 > 其他分享 >Springboot AOP注解实现切面拦截

Springboot AOP注解实现切面拦截

时间:2023-12-07 17:56:21浏览次数:34  
标签:Springboot Object annotation xxxAnnotation 切面 AOP 注解 todo pjp

注解声明

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface xxxAnnotation {

    /**
     * 注解属性
     */
    Object xxx() default 5;


}

注解逻辑实现

/**
 * @author alpha.
 * @className xxxAnnotationExt
 * @date 2023/12/7 15:28
 */
@Slf4j
@Aspect
@Component
public class xxxAnnotationExt {

    //环绕通知(可以拿到controller请求参数)
    @Around("@annotation(com.deju.framework.aspectj.login.LoginExceptionIntercept)")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        xxxAnnotation xxxAnnotation = getAnnotation(pjp);

        // 获取HttpServletRequest的参数
        参数类型 参数 = (参数类型) pjp.getArgs()[0];


        try {
            //todo
            // 放行原方法调用
            Object proceed = pjp.proceed();
            //todo
            //正常返回
            return proceed;
        } catch (Exception e) {
            // 异常todo
        }
    }

    private xxxAnnotation getAnnotation(ProceedingJoinPoint pjp) {
        MethodSignature signature = (MethodSignature) pjp.getSignature();
        Method method = signature.getMethod();
        Annotation annotation = method.getAnnotation(xxxAnnotation.class);
        return (xxxAnnotation) annotation;
    }
}

标签:Springboot,Object,annotation,xxxAnnotation,切面,AOP,注解,todo,pjp
From: https://www.cnblogs.com/BoBo-B0BO/p/17883560.html

相关文章

  • SpringBoot整合邮箱发送验证码
    1、以QQ邮箱为例,点开设置开启POP3/SMTP服务2、创建一个springboot项目1)引入maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>2)配置yml文件spring:......
  • Springcloud学习笔记58--SpringBoot拦截全局异常统一处理(RestControllerAdvice注解)
    1. 应用场景如果和前端约定好使用固定的自定义格式返回参数,如下:{"code":200,"msg":"操作成功","data":{"equipment":55,"code":99,"point":2}}但在运行时发现了异常,默认的异常返回格式如下:......
  • 小说网站|基于Springboot和Vue实现在线小说阅读网站
     作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路 关注......
  • Springboot项目实现过滤器功能
    核心类FilterFilter接口的全限定类名是javax.servlet.Filter,该接口有三个方法,分别是1、init(...):用于初始化Filter;2、doFilter(...):过滤请求和拦截响应信息的具体实现在这个方法里;3、destroy(...):Filter对象被销毁时触发,主要用于做一些收尾工作,如资源的释放等;FilterConfigF......
  • springboot监听器&拦截器【转】
    1.监听器https://www.cnblogs.com/elnimo/p/15641367.htmlCommandLineRunnerhttps://blog.csdn.net/qq_34531925/article/details/82527066https://www.cnblogs.com/yanxiaoguo/p/16167221.html2.拦截器https://blog.csdn.net/qq_50652600/article/details/127250413......
  • Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第一章、传统SSM开发回顾以及问题Spring+SpringMVC+MybatisSSM实现一个简单功能员工添加、查询…SSM项目简单实现项目需求分析—>概要设计—>(库表设计)—>详细设计—>(验证库表正确性)—>编码(环境搭建+......
  • SpringBoot高级开发(8)SpringBoot使用Lettuce设置多个RedisTemplate实例
    copy from:https://xiaomozhang.github.io/2021/02/07/spring-boot-lettuce-multi-instance/项目pom配置使用SpringBoot集成Redis,只需要将spring-boot-starter-data-redis和commons-pool2加到依赖即可 xml<dependency><groupId>org.springframework.boot</groupId>......
  • 【SpringBootWeb入门-6】请求响应-请求参数-数组集合参数&Json参数&路径参数
    这篇我们接着上一篇的请求参数来讲解另外几个常见参数的接收以及封装:数组集合参数、Json参数、路径参数。数组集合参数1、数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数在Postman接口测试新建测试,获取请求数组参数type。然后新建参数处......
  • SpringBoot集成Jasypt实现数据加密
    1、环境说明JDK1.8+SpringBoot2.7 2、添加pom依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency> 3......
  • @SpringBootTest 和 @RunWith 注解不能识别 单元测试第一步引入maven依赖
    @SpringBootTest和@RunWith注解不能识别单元测试第一步引入maven依赖一、背景    最近在预研 Rocketmq,在写小例子的时候,需要编写测试代码,突然间发现我的 @SpringBootTest 和 @RunWith 这两个注解不能识别,于是展开了我的问题排查过程。问题截图如下:二、问题排......