Java轻松开发自定义注解

news2024/12/23 22:51:10

注解开发

元注解

@Target(ElementType)

修饰的这个注解的使用范围,即被描述的注解可以用在哪里。

@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)——包**

也可以是个数组**@Target({ElementType.TYPE, ElementType.METHOD})**


@Retention(RetentionPolicy)

注解的生存周期,即会保留到哪个阶段。

  1. SOURCE. 注解保留在源代码中,但是编译的时候会被编译器所丢弃。比如@Override, @SuppressWarnings;
  2. CLASS. 这是默认的policy。注解会被保留在class文件中,但是在运行时期间就不会识别这个注解
  3. RUNTIME. 注解会被保留在class文件中,同时运行时期间也会被识别。所以可以使用反射机制获取注解信息。比如@Deprecated。

自定义注解

@interface就是用来定义注解的,类似于class定义类 和 interface 定义接口

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

    String value() default "";
}

String value() default"“;定义一个value()的方法,返回值类型时String没有赋值默认返回”"这个字符串

定义注解配置类

@Aspect
@Component
@Slf4j
public class AutoInterceptor {

    static {
        log.info("AutoInterceptor run ...");
    }

    @Pointcut("execution(* *(..))")
    private void pointCut() {
    }

    @Around("pointCut() && @annotation(autoCheck)")
    public void beforeCheckBean(JoinPoint point, AutoCheck autoCheck) throws Exception {
        // 判断注解中的属性是否为空
        if(autoCheck.value().equals("")){
            System.out.println("autoCheck:"+"注解属性为空");
        }else {
            System.out.println(autoCheck.value());
        }
    }
}

测试

@RestController
public class UserController {

    @GetMapping("/user")
    @AutoCheck(value = "testAutoCheck")
    public String test(){
        return "testuser";
    }
}

在这里插入图片描述

在这里插入图片描述

成功…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

antd5:图片上传接口参数

使用场景,后端给了一个上传文件的接口/api/file/upload,方法类型为post,参数为{file: binary,type:string}. 上传文件需要设置请求头content-type. 项目使用的是umi4antd5 请求拦截便在app.ts文件写。 export const request: RequestConfig {baseURL: /api,time…

【MTK平台】根据kernel log分析wifi 打开的时候流程

一 概要: 本文主要讲解根据kernel log分析下 当前路径下(vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/)wifi打开的时候代码流程 二. Log分析: 先看Log 2.1)在Framework层WifiManager.java 方法中,做了一个标记,可以精准的确认时间 这段log可以看出…

【业务功能篇81】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-入门实战

ElasticSearch 一、ElasticSearch概述 1.ElasticSearch介绍 ES 是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。它可以近乎实时的存储,检索数据;本身扩展性很好,可以扩展到上百台服务器,…

SAP SD (Sales Distribution)简要介绍

目录 前言 一、SD的企业结构 二、SD 模块的特性 三、SD下的子模块/组件Components 前言 SAP SD代表销售和分销,它是核心模块之一,处理从收到产品订单到将产品交付给客户的各种业务流程,以完成客户订单。SAP R/3的主要优点是与内部和外部…

leetcode503. 下一个更大元素 II 单调栈

思路: 与之前 739、1475 单调栈的问题如出一辙,唯一不同的地方就是对于遍历完之后。栈中元素的处理,之前的栈中元素因无法找到符合条件的值,直接加入vector中。而这里需要再重头遍历一下数组,找是否有符合条件的&…

UG\NX二次开发 使用录制功能录制操作记录时,如何设置默认的开发语言?

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C,Qt-CSDN博客 简介: NX二次开发使用BlockUI设计对话框时,如何设置默认的代码语言? 效果: 方法: 依次打开“文件”->“实用…

CV:边缘检测的算法包含 Prewitt、Sobel、Laplacian 和 Canny。

目录 1. 边缘检测(Prewitt) 2. 边缘检测(Sobel) 3. 边缘检测(Laplacian) 3. 边缘检测(Canny) 边缘检测的算法包含 Prewitt、Sobel、Laplacian 和 Canny。 人在图像识别上具有难…

Hystrix: 服务熔断

开始搭建8001服务的熔断机制 创建子模块 同样拷一份pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

Checkstyle安装、使用

Checkstyle简介 Checkstyle是SourceForge下的一个项目&#xff0c;官网&#xff1a; https://checkstyle.sourceforge.io/ 在官网有详细的说明。 Checkstyle是一个开发工具&#xff0c;可以帮助开发者自动检查java代码是否遵循编程规范&#xff0c;将开发者从枯燥繁琐的手工…

scroll-view 组件里的 scroll-into-view 属性实例

微信小程序的scroll-view组件中&#xff0c;scroll-into-view 属性可以指定滚动到指定id的位置。 <scroll-view class"content" scroll-y scroll-into-view"{{ intoIndex }}" scroll-with-animation>intoIndex 值应为某子元素id&#xff08;id不能以…

在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)

1. 安装svn yum -y install subversion 安装成功&#xff1a; 2. 创建数据根目录及仓库 mkdir -p /usr/local/svn/svnrepository 创建test仓库&#xff1a; svnadmin create /usr/local/svn/test test仓库创建成功&#xff1a; 3. 修改配置test仓库 cd /usr/local/svn/te…

JAVA坦克大战游戏v3

JAVA坦克大战游戏v3 素材 bomb_3.gif bomb_2.gif bomb_1.gif 项目结构 游戏演示 MyTankGame3.java /*** 功能:坦克游戏的5.0[]* 1.画出坦克.* 2.我的坦克可以上下左右移动* 3.可以发射子弹,子弹连发(最多5)* 4.当我的坦克击中敌人坦克时&#xff0c;敌人就消失(爆炸的效…

二叉查找树、平衡二叉树、红黑树到底怎么插入调整?不用旋转快速实现

目录 时间复杂度二叉查找树二叉查找树的插入二叉查找树的删除 平衡二叉树平衡二叉树的插入平衡二叉树的删除 红黑树红黑树的插入红黑树的删除 时间复杂度 首先二叉查找树、平衡二叉树、红黑树的时间复杂度如下所示&#xff1a; 红黑树和二叉查找树的时间复杂度是一样的&#x…

电测知识分享——雷达行业必读热点!脉冲和跳频脉冲信号的生成与解调教程来了

按照信号分类&#xff0c;雷达通常有两种基本类型&#xff1a;连续波(CW)雷达和脉冲雷达。 连续波雷达多为小型的简易雷达。在应用中有单载频连续被和调制连续波两大类。单载频连续被雷达只能测速不能测距&#xff0c;广泛用于各种测速系统&#xff0c;比如交警的测速雷达。调…

自研软件太贵、购买成品软件太死板?不怕,我这有高招

传统IT自研软件开发&#xff0c;通过编程去写代码&#xff0c;还有数据库、API、第三方基础架构等。从而造成开发周期长、难度大&#xff0c;技术人员不易于开发维护&#xff0c;因此价格及时间成本也是相对较高。后期出现了可以直接应用的成品软件&#xff0c;以及现在火热的低…

GAN原理 代码解读

模型架构 代码 数据准备 import os import time import matplotlib.pyplot as plt import numpy as np import torchvision.transforms as transforms from torch.utils.data import DataLoader from torchvision import datasets import torch.nn as nn import torch# 创建文…

docker compose iceberg 快速体验

https://iceberg.apache.org/spark-quickstart/#docker-compose port&#xff1a;8888

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-…

DPU在东数西算背景下如何赋能下一代算力基础设施 中科驭数在未来网络发展大会论道

以ChatGPT为代表的人工智能大模型的快速发展&#xff0c;对网络信息技术创新发展提出了新的挑战&#xff0c;我国东数西算重大工程也在加速布局。以确定性网络、算力网络为代表的未来网络核心技术&#xff0c;正成为决定未来经济和产业发展的关键。 8月23日&#xff0c;第七届…

学生分班查询系统的创建与使用指南

开学季&#xff0c;负责分班工作的老师们又面临一个难题&#xff1a;如何公布分班结果&#xff1f;将结果放在学校官网上可能会让很多无关人员看到&#xff0c;而不放则会导致家长们纷纷打电话来询问。那么&#xff0c;有没有一种方法可以让家长们自行查看分班结果呢&#xff1…