自定义注解类编写的一些规则:

1定义一个注解Annotation

定义为@interface,所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口。

参数成员只能用public或默认(default)这两个访问权修饰。

参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组

package com.success.access.audit.annotation;import ...
/*** 接口访问控制注解*/
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface AccessAuditAnnotation {/** 日志模块*/String moduleCode();/**日志模块*/String module();/**记录参数*/boolean recordParam() default true;
}

@Retention 注解:指明修饰的注解的生存周期,即会保留到哪个阶段。
RetentionPolicy的取值包含以下三种:
@Retention(RetentionPolicy.SOURCE) —— 这种类型的Annotations只在源码级别保留,编译后即丢弃;

@Retention(RetentionPolicy.CLASS) —— 这种类型的Annotations编译级别保留,编译后的class文件中存在,在jvm运行时丢弃
@Retention(RetentionPolicy.RUNTIME) —— 这种类型的Annotations运行级别保留,编译后的class文件中存在,在jvm运行时保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用

@Target 注解:

@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包

@Aspect//将一个类定义为一个切面类

@Pointcut//定义需要切面的地方,表达式参数(https://blog.csdn.net/elim168/article/details/78150438)

@annotation//匹配注解,当执行的方法上拥有指定的注解时生效。

几个注解的解释
@Around 环绕切点,在进入切点前,跟切点后执行

@After 在切点后,return前执行,

@Before 在切点前执行方法,内容为指定的切点

2定义一个aop类

package com.success.access.audit.aop;import .../*** 权限访问控制*/
@Aspect
@Component
@Slf4j
public class AccessAuditAop {@AutowiredStringRedisTemplate stringRedisTemplate;/*** 环绕带注解 @AccessAuditAnnotation的方法做aop*/@Around(value = "@annotation(com.success.access.audit.annotation.AccessAuditAnnotation)")public Object accessAuditCheck(ProceedingJoinPoint joinPoint) throws Throwable {//具体的方法逻辑}
}

3使用

在Controller的每个接口上增加注解@AccessAuditAnnotation(moduleCode = "RY", module = "人员"),这样在调用接口的时候,会先走aop方法

SpringBoot自定义注解和aop相关推荐

  1. 自定义注解加AOP怎么玩?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 乱敲代码 来源 | 公众号「乱敲代码」 前言 ...

  2. @retention注解作用_分分钟带你玩转SpringBoot自定义注解

    在工作中,我们有时候需要将一些公共的功能封装,比如操作日志的存储,防重复提交等等.这些功能有些接口会用到,为了便于其他接口和方法的使用,做成自定义注解,侵入性更低一点.别人用的话直接注解就好.下面就来 ...

  3. 一个简单的例子,学习自定义注解和AOP

    转载自   一个简单的例子,学习自定义注解和AOP 记得今年年初刚开始面试的时候,被问的最多的就是你知道Spring的两大核心嘛?那你说说什么是AOP,什么是IOC?我相信你可能也被问了很多次了. 1 ...

  4. 元旦加班写SpringBoot自定义注解

    写在前面 这个点我们公司的人走的已经差不多了,原因很简单呀,明天元旦嘛,放假前可是不加班的,很nice,实习生的我,今天给大家分享一篇springboot自定义注解的技术文章. 很牛逼的注解 开发过程 ...

  5. 通过自定义注解与aop统一存储操作记录

    模块开发完成后,接到通知需要添加操作记录功能,看着那一堆接口,如果一个方法一个方法的加,那真是太麻烦了.为了偷懒,就百度了一下,发现可以通过自定义注解和aop的形式来统一添加操作记录,只需要在每个方法 ...

  6. Springboot自定义注解实现用户登录状态校验(一)

    Springboot自定义注解实现用户登录状态校验(一) 拦截器方式 定义注解类 import java.lang.annotation.*;/*** @author:小飞猪* @date:2020/ ...

  7. java aop注解日志记录_springMVC自定义注解,用AOP来实现日志记录的方法

    需求背景 最近的一个项目,在项目基本完工的阶段,客户提出要将所有业务操作的日志记录到数据库中,并且要提取一些业务的关键信息(比如交易单号)体现在日志中. 为了保证工期,在查阅了资料以后,决定用AOP+ ...

  8. springboot 自定义注解拦截器

    springboot 自定义注解拦截器 最近在工作中,发现自定义注解拦截使用起来特别方便,现在来写出来给大家看看 环境springboot 首先写一个自定义注解 package com.study.c ...

  9. java方法设置切点_如何通过自定义注解实现AOP切点定义

    面向切面编程(Aspect Oriented Programming, AOP)是面向对象编程(Object Oriented Programming,OOP)的强大补充,通过横切面注入的方式引入其他 ...

最新文章

  1. HashMap原理和使用
  2. systemparametersinfo详细
  3. Dubbo-HelloWorld
  4. python 线性回归 技术方案亮点_基于Python的线性回归实战
  5. python discuz搜索api_python如何模拟搜索引擎分词
  6. 原有ui项目调用qml_从0开始写前端UI框架:概述
  7. 使用Upida/Jeneva.Net验证传入的JSON
  8. 记录在Ubuntu 18.04系统中安装Apache, MySQL和PHP环境
  9. 腾讯说:云上移动开发很简单(这不是P的)!
  10. CSS从入门到精通——基础知识
  11. c语言字符二维数组传参,C语言——二维数组传参
  12. nginx参数keepalive_timeout
  13. 海康威视高级副总裁毕会娟:全面解读“物信融合数据平台”的功能与业务逻辑...
  14. 我谈 Markdown
  15. [下载] Windows 10 Version 1809 微软官方原版镜像
  16. Unity 3d 摄像头
  17. IM方案技术调研报告
  18. kali下载软件时出现“部分索引文件下载失败,如果忽略他们,那将转而使用旧的索引文件”
  19. 《通用数据保护条例》(GDPR)系列解读二:个人七大数据权利,企业违反或面临2000万罚款
  20. 20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结

热门文章

  1. 基尼系数,累积准确度分布,AUC
  2. 阿里云数字化安全生产平台 DPS V1.0 正式发布
  3. 为什么做SEO感觉不成功?做不好SEO的几个原因汇总
  4. 微软骂人:请勿TM关闭......
  5. android 键盘弹出 监听,奇技淫巧之-Android监听键盘弹出与隐藏事件
  6. 2017android 最强旗舰,2017年旗舰机大比拼 小米第四 第一名毫无争议
  7. Android录音监控的实现原理
  8. MindOpt有关于Python的建模与优化
  9. 【matlab图像处理】图片生成油画效果(选择路径-交互)
  10. Overlay和Underlay网络协议区别及概述讲解