写在前面

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

很牛逼的注解

开发过程中,想必大家都用过或听过注解吧,加个注解万事大吉,但是为什么这么厉害呢,底层葫芦里到底装的什么药,今天我们就切开葫芦看看瓢。

离不开的Java新特性

用springboot注解的时候,感觉,哇spring好厉害,殊不知,点进去看源码,是JDK注解的功劳呀,首先看看,Component注解,上面三个都是JDK的注解,也就是元注解。@Indexed是啥呢,这个是索引的东西,暂不讨论。

令人好奇的东西

我最初的时候,就这样写一个注解,他就能生效了吗,哈哈哈,太天真了吧,其实还有一个牛逼的操作呢,该注解的作用,逻辑在哪写呢,这个时候AOP思想可以善良登场了,我们可以通过一个切面的思想来解决。(聊点题外话,切面怎么实现的呢,答案是动态代理,那动态代理是怎么实现的呢,是通过JDK或CGLIB实现的,那问题来了,JDK和CGLIB又是怎么实现的呢,恕我直言,我也不知道。)

强大的AOP

面试的时候,经常问到AOP的问题,但是水水的我总是说,AOP定义一个切面可以实现日志的功能,天天都是这样回答,我都有点不耐烦了,今天来点特殊的,还是日志,但是这次用注解实现。

既然用注解实现AOP,那首先需要定义一个注解吧,怎么定义呢,模仿别人。

注解定义好了,里面的参数简单说一下,这里着重讲解如何自定义注解。
lementType.METHOD这个意思是用到方法上的注解
RetentionPolicy.RUNTIME这个是运行时生效的
@Documented这个就是生成javadoc的东西了
注解定义好了,那接下来干什么呢,当然是让该注解生效了,怎么生效呢,AOP可以出现了。

里面的注释这么多,我就不多bb了。
然后就可以测试了呀。是不是很简单,我也觉得,难的东西都是别人实现好的。。。有能力,可以研究一下@Aspect的底层实现,或者是等我发布文章,我们一起探讨,撤远了,测一下吧。

通过一个controller,只需要加一个@MyLog即可。

可以清楚的看到,已经生效了,注解的神奇之处还有很多,这只是一个入门,今天的内容就到这里了,祝大家元旦快乐!我们下期再见~

元旦加班写SpringBoot自定义注解相关推荐

  1. springboot 自定义注解拦截器

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

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

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

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

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

  4. SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战

    一.前言 在面试中,经常会有一道经典面试题,那就是:怎么防止接口重复提交? 小编也是背过的,好几种方式,但是一直没有实战过,做多了管理系统,发现这个事情真的没有过多的重视. 最近在测试过程中,发现了多 ...

  5. SpringBoot自定义注解接收json参数

    SpringBoot如果接受json参数的话需要定义实体类然后使用@RequestBody注解,但是如果每个接口都创建一个实体类的话太麻烦,因此可以使用自定义注解的方法接收.从网上发现了这篇博客,解决 ...

  6. springboot+自定义注解实现灵活的切面配置

    利用aop我们可以实现业务代码与系统级服务例如日志记录.事务及安全相关业务的解耦,使我们的业务代码更加干净整洁. 最近在做数据权限方面的东西,考虑使用切面对用户访问进行拦截,进而确认用户是否对当前数据 ...

  7. Springboot 自定义注解AOP实现时间参数格式转换

    前言 场景: 前端传过来的时间参数,我们后端自定义时间格式转化使用,想转成什么就转成什么. 不同业务场景,跟前端对接,一种控件基本时间参数是固定格式的,为了避免前端去转换时间参数的格式,跟前端约定好, ...

  8. SpringBoot自定义注解和aop

    自定义注解类编写的一些规则: 1定义一个注解Annotation 定义为@interface,所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的 ...

  9. Springboot 自定义注解、切面

    本文实现的是使用自定义注解作为切入点. 1.创建springboot工程,引入依赖 本次任务实例主要引入以下两个依赖即可. <dependencies><dependency> ...

最新文章

  1. python raise valueerror_raise ValueError('无法设置没有定义索引的帧'ValueError:
  2. oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?
  3. 启动计算机引导win10,教您win10引导项丢失怎么办
  4. PAT_B_1029 旧键盘
  5. 使用jMeter构造逻辑上有依赖关系的一系列并发请求
  6. 响应式方案调研及前端开发管理思考
  7. 华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全
  8. 前端 学习笔记day47 其他标签
  9. vuecli3修改项目启动端口
  10. C/C++语言传参、返回参数知识点讲解
  11. 【有利可图网】PS实战教程28:巧用调整边缘滤镜抠毛发
  12. html写手机登录界面,使用HTML做手机端的登录界面
  13. 网络安全-点击劫持(ClickJacking)的原理、攻击及防御
  14. 90后小伙新创奶茶品牌,坪效惊人月销售十万!
  15. 为公寓运营商提供SaaS管理系统,寓小二获贝壳找房5000万元A轮融资...
  16. android+单机button+设置背景图片,button设置点击更改背景图片
  17. Git commit hook 规范标准配置
  18. Selenium原理以及Python从零实现
  19. [系统安全] 虚拟化安全之虚拟化概述
  20. python中nx_Siemens NX (UG)中对于Python第三方包(函数库)的设置方法

热门文章

  1. 转(ASP.NET页面缓存)
  2. 找出N个无序数中第K大的数
  3. java-Hyper-V
  4. 前端面试题目笔记-5
  5. c# Form中的键盘响应
  6. fck2.6.3配置
  7. python基础之类的属性方法、魔术方法普通方法
  8. 练习1.account表 添加一条记录
  9. 通过路由远程计算机重启,路由器怎么重启?这几种方法教你重启怎么弄!
  10. linux删除文件夹命令6,Linux下创建、删除文件和文件夹命令