首页 > 编程语言 >Java 自定义注解

Java 自定义注解

时间:2024-07-28 10:41:40浏览次数:12  
标签:Java 自定义 void joinPoint RecordRetryMessage 注解 public

一、Java 自定义注解的用途、

   1、可以记录在特殊方法进行日志记录

         2、可以进行 特殊鉴权 如 @ValidateRole(“admin") 只有当前用户拥有指定角色时才放行 否则抛自定义异常 无权限

        3、可以用于参数 如 Controller 方法中的参数进行 参数格式验证

 

二、自定义注解记录需要重试的请求数据到数据库

   2.1 pom 节点引入    

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

启动需要加 @EnableAspectJAutoProxy

@SpringBootApplication
@EnableAspectJAutoProxy
@ComponentScan("com.lyb.*")
public class OpenDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(OpenDemoApplication.class, args);
    }
}

 

 

 2.2  自定义注解名称 

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RecordRetryMessage {


    /**
     * 保存重试消息类型
     * @return
     */
    int messageType() default 1;
}

2.3 依赖切面 aspect 实现 自定义注解 

@Aspect
@Component
public class RetryMessageAspect {

    @Autowired
    UserInfoService userInfoService;

    @Pointcut("@annotation(com.lyb.web.annotation.RecordRetryMessage)")
    public void retryMessage() {

    }

    @Around("retryMessage()")
    public void before(ProceedingJoinPoint joinPoint) throws Throwable {
        Object[] objects = joinPoint.getArgs();
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        RecordRetryMessage myLog = signature.getMethod().getAnnotation(RecordRetryMessage.class);
        System.out.println("注解上的参数值:" + myLog.messageType());
        System.out.println("userInfoService.testC() = " + userInfoService.testC());
        objects[1] = "修改后的参数值";

        joinPoint.proceed(objects);


    }
}

2.4 使用自定义注解 

    @RecordRetryMessage(messageType = 1)
    public  void  testB(String l,String l1) {
        System.out.println("testB(); = ");
    }

 

 

      

 

标签:Java,自定义,void,joinPoint,RecordRetryMessage,注解,public
From: https://www.cnblogs.com/liyanbofly/p/18194898

相关文章

  • Java计算机毕业设计旅游服务管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,旅游服务管理的复杂性与日俱增。传统的手工管理方式已难以满足现代旅游业的高效、精准服务需求。特别是在用户体验、旅游团管理......
  • Java计算机毕业设计驾校学员管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着汽车保有量的持续增长,驾驶技能已成为现代社会不可或缺的基本技能之一。驾校作为培养驾驶员的重要机构,其学员管理效率与服务质量直接影响到学员的......
  • Java计算机毕业设计美食商城(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和人们生活水平的日益提高,美食不再仅仅是满足口腹之欲的简单需求,它已经成为了一种文化、一种生活方式,甚至是一种社交媒介。在这......
  • Java计算机毕业设计结合疫情情况的婚恋系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景近年来,全球疫情的持续影响不仅改变了人们的生活方式,也深刻影响了人们的社交与情感需求。在隔离与社交距离成为常态的背景下,传统线下相亲、约会活动受......
  • javac 提示类文件具有错误的版本 62.0,应为 52.0
    您遇到的错误提示"类文件具有错误的版本61.0,应为52.0"表示您正在尝试运行一个使用较新版本的Java编译的类文件,而您的Java运行环境(JRE)版本较旧。具体来说:版本61.0对应于Java17。版本52.0对应于Java8。因此,您需要使用Java17或更高版本的JDK来编译和运行该......
  • JAVA基础 - 运算符
    目录一.简介二.算术运算符二.自加,自减三. 算术赋值运算符四.关系运算符五.逻辑运算符六.位运算符七.其他运算符八.运算优先级一.简介在Java中,运算符用于对数据进行各种运算操作。以下是一些常见的Java运算符:算术运算符:+ :加法- :减法* :乘法/ ......
  • Java周总结4
    1、进行面向对象的案例packagecom.myjava.playgame;importjava.util.Random;publicclassuser{//姓名。血量,性别,长相privateStringname;privateintblool;privateStringgender;privateStringface;//长相数组String[]boyf......
  • (免费领源码)java#ssm#mysql航空机票管理系统27545-计算机毕业设计项目选题推荐
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的航空机票管理系统,机票系统的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本航空机票管理系统是针对目前航空机票管理系统的实际需求,从实际工作出发,对......
  • Java入门到精通:第八课 数组
    一、数组概述1、数组的解释:可以存储同种数据类型的多个值的一种容器2、注意:(1)存储数据时,需要结合隐式转换:(2)建议:容器的类型,和存储的数据类型保持一致二、数组的定义1、格式:2、数组的静态初始化3、数组的动态初始化4、数组的静态初始化和数组的静态初始化的区别:......
  • 【免费领源码】Java/Mysql数据库+SSM校园兼职网站 25557,计算机毕业设计项目推荐上万套
    摘 要当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动正在向网络化发展。兼职......