元旦加班写SpringBoot自定义注解
写在前面
这个点我们公司的人走的已经差不多了,原因很简单呀,明天元旦嘛,放假前可是不加班的,很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自定义注解相关推荐
- springboot 自定义注解拦截器
springboot 自定义注解拦截器 最近在工作中,发现自定义注解拦截使用起来特别方便,现在来写出来给大家看看 环境springboot 首先写一个自定义注解 package com.study.c ...
- @retention注解作用_分分钟带你玩转SpringBoot自定义注解
在工作中,我们有时候需要将一些公共的功能封装,比如操作日志的存储,防重复提交等等.这些功能有些接口会用到,为了便于其他接口和方法的使用,做成自定义注解,侵入性更低一点.别人用的话直接注解就好.下面就来 ...
- Springboot自定义注解实现用户登录状态校验(一)
Springboot自定义注解实现用户登录状态校验(一) 拦截器方式 定义注解类 import java.lang.annotation.*;/*** @author:小飞猪* @date:2020/ ...
- SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战
一.前言 在面试中,经常会有一道经典面试题,那就是:怎么防止接口重复提交? 小编也是背过的,好几种方式,但是一直没有实战过,做多了管理系统,发现这个事情真的没有过多的重视. 最近在测试过程中,发现了多 ...
- SpringBoot自定义注解接收json参数
SpringBoot如果接受json参数的话需要定义实体类然后使用@RequestBody注解,但是如果每个接口都创建一个实体类的话太麻烦,因此可以使用自定义注解的方法接收.从网上发现了这篇博客,解决 ...
- springboot+自定义注解实现灵活的切面配置
利用aop我们可以实现业务代码与系统级服务例如日志记录.事务及安全相关业务的解耦,使我们的业务代码更加干净整洁. 最近在做数据权限方面的东西,考虑使用切面对用户访问进行拦截,进而确认用户是否对当前数据 ...
- Springboot 自定义注解AOP实现时间参数格式转换
前言 场景: 前端传过来的时间参数,我们后端自定义时间格式转化使用,想转成什么就转成什么. 不同业务场景,跟前端对接,一种控件基本时间参数是固定格式的,为了避免前端去转换时间参数的格式,跟前端约定好, ...
- SpringBoot自定义注解和aop
自定义注解类编写的一些规则: 1定义一个注解Annotation 定义为@interface,所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的 ...
- Springboot 自定义注解、切面
本文实现的是使用自定义注解作为切入点. 1.创建springboot工程,引入依赖 本次任务实例主要引入以下两个依赖即可. <dependencies><dependency> ...
最新文章
- python raise valueerror_raise ValueError('无法设置没有定义索引的帧'ValueError:
- oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?
- 启动计算机引导win10,教您win10引导项丢失怎么办
- PAT_B_1029 旧键盘
- 使用jMeter构造逻辑上有依赖关系的一系列并发请求
- 响应式方案调研及前端开发管理思考
- 华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全
- 前端 学习笔记day47 其他标签
- vuecli3修改项目启动端口
- C/C++语言传参、返回参数知识点讲解
- 【有利可图网】PS实战教程28:巧用调整边缘滤镜抠毛发
- html写手机登录界面,使用HTML做手机端的登录界面
- 网络安全-点击劫持(ClickJacking)的原理、攻击及防御
- 90后小伙新创奶茶品牌,坪效惊人月销售十万!
- 为公寓运营商提供SaaS管理系统,寓小二获贝壳找房5000万元A轮融资...
- android+单机button+设置背景图片,button设置点击更改背景图片
- Git commit hook 规范标准配置
- Selenium原理以及Python从零实现
- [系统安全] 虚拟化安全之虚拟化概述
- python中nx_Siemens NX (UG)中对于Python第三方包(函数库)的设置方法