首页 > 其他分享 >SpringBoot(二十六)SpringBoot自定义注解

SpringBoot(二十六)SpringBoot自定义注解

时间:2024-11-18 09:44:17浏览次数:3  
标签:SpringBoot 自定义 参数 interface 注解 TYPE class

注解在springboot日常开发中使用的频率是很高的,官方为我们提供了很多注解,比如:@Autowired、@GetMapping等……

但是我们有些特定的需求官方提供的注解是没有的。我们可以自定义注解。

下面我们来了解一下自定义注解的过程。

一:元注解

Java为我们提供了几个元注解来自定义注解。分别是:

1)      @Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

TYPE,   // 类,接口(包括注解类型)或枚举声明
FIELD,  // 字段声明(包括枚举常量)
METHOD, // 方法声明
PARAMETER,  // 方法参数
CONSTRUCTOR,  // 构造方法
LOCAL_VARIABLE,  // 局部变量
ANNOTATION_TYPE, // 注解类型
PCKAGE,  // 包
TYPE_PARAMETER,
TYPE_USE

2)      @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期

取值

描述

作用范围

使用场景

SOURCE

表示注解只保留在源文件,当java文件编译成class文件,就会消失

源文件

只是做一些检查性的操作,,比如 @Override 和 @SuppressWarnings

CLASS

注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期

class文件(默认)

要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife)

RUNTIME

注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在

运行时也存在

需要在运行时去动态获取注解信息

3)      @Document:说明该注解将被包含在javadoc中

4)      @lnherited:说明子类可以继承父类中的该注解

二:自定义注解

使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口。

分析:

@interface用来声明一个注解,格式:public@interface注解名{定义内容}

其中的每一个方法实际上是声明了一个配置参数

方法的名称就是参数的名称

返回值类型就是参数的类型(返回值只能是基本类型,Class,String,enum)

可以通过default来声明参数的默认值

如果只有一个参数成员,一般参数名为value

注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值,

自定义注解分为两部分:

1:自定义注解

(1):只有一个参数的注解

// 只能在方法上使用
@Target(ElementType.METHOD)
// Runtime级别注解
@Retention(RetentionPolicy.RUNTIME)
@interface MyCustomAnnotation {
    // 如果只有一个参数,直接用value就可以,可以添加默认值
    String value() default "";
}


调用:

@GetMapping("get")
@MyCustomAnnotation("test")
public void myMethod() {
    // 业务逻辑
    Sy

标签:SpringBoot,自定义,参数,interface,注解,TYPE,class
From: https://blog.csdn.net/qq_39708228/article/details/143844904

相关文章

  • 2024-11-17 uniapp小程序之自定义 · 全局弹窗
    效果图:目录结构: 共需要修改6个地方,开始前请安装一个依赖:vue-inset-loadernpmivue-inset-loadervue-inset-loader的GitHub地址:https://github.com/1977474741/vue-inset-loader一:新建弹窗文件components/golbalModa.vue<template><viewclass="modal"v-if="globa......
  • 【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)
    本文项目编号T040,文末自助获取源码\color{red}{T040,文末自助获取源码}......
  • springboot毕设 数据分析及推荐机制的篮球周边电商平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着体育产业的蓬勃发展,篮球运动在全球范围内拥有庞大的粉丝基础。这一庞大的用户群体不仅关注篮球赛事,对篮球周边商品的需求也日益增长。传统的篮球......
  • SpringBoot运动心跳数据分析系统mef44(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着健康意识的不断提升,人们对自身运动状态及健康状况的关注度日益增强。心率作为反映人体健康状态的重要指标之一,其变化能够直观体现......
  • SpringBoot配置类
    在SpringBoot中,配置类是一种特殊的类,用于定义和配置Spring应用程序的各种组件、服务和属性。这些配置类通常使用Java注解来声明,并且可以通过Spring的依赖注入机制来管理和使用。Spring容器初始化时会加载被@Component、@Service、@Repository、@Controller等注解标识的类......
  • 【预训练-微调】迁移学习项目实战自定义数据集宝可梦精灵-学习笔记
    本学习笔记来源于B站:深度学习—迁移学习项目实战自定义数据集宝可梦精灵。在本预训练-微调代码中,重点要学习的内容包括:加载官方提供的经典网络架构resnet18和已经训练好的模型,对最后一层全连接层进行修改,改为适合自己任务的网络架构。在此基础上,训练最后一层全连接层,并保存最......
  • SpringBoot在线投票数据分析平台研究与设计8kxf0(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网技术的普及,在线投票活动逐渐成为各类组织、企业和个人进行决策和意见收集的重要手段。然而,如何高效地收集、整理和分......
  • SpringBoot在线教育系统a1q7y(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网技术的快速发展,教育领域正经历着前所未有的变革。在线教育系统作为数字化教育的重要载体,以其跨越时空限制、灵活便捷......
  • 基于Springboot+Vue的停车管理系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • 基于Springboot+Vue的中国蛇类识别系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......