Spring工具类--AnnotatedElementUtils的使用

news/2024/12/27 1:22:50/

原文网址:Spring工具类--AnnotatedElementUtils的使用_IT利刃出鞘的博客-CSDN博客

简介

本文介绍Spring的AnnotatedElementUtils工具类的使用。

AnnotatedElementUtils与AnnotationUtils的不同之处在于:AnnotatedElementUtils可以通过父注解获得子注解上的值,而后者不能。

用法

注解

package com.example.annotation;import org.springframework.core.annotation.AliasFor;import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Documented
@Inherited
public @interface MyAnnotation {@AliasFor(attribute = "location")String value() default "";@AliasFor(attribute = "value")String location() default "";
}
package com.example.annotation;import org.springframework.core.annotation.AliasFor;import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Documented
@Inherited
@MyAnnotation
public @interface SubMyAnnotation {@AliasFor(annotation = MyAnnotation.class)String location() default "";//    这个不能写,只能有一个与父属性名同名的属性,否则报错
//    @AliasFor(annotation = MyAnnotation.class)
//    String value() default "";
}

控制器

package com.example.controller;import com.example.annotation.MyAnnotation;
import com.example.annotation.SubMyAnnotation;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/hello")
public class HelloController {@SubMyAnnotation(location = "location(my)")@RequestMapping("/test")public String test() {SubMyAnnotation subMyAnnotation = null;MyAnnotation myAnnotation = null;MyAnnotation myAnnotation1 = null;try {subMyAnnotation = AnnotationUtils.getAnnotation(this.getClass().getMethod("test"), SubMyAnnotation.class);myAnnotation = AnnotationUtils.getAnnotation(this.getClass().getMethod("test"), MyAnnotation.class);myAnnotation1 = AnnotatedElementUtils.getMergedAnnotation(this.getClass().getMethod("test"), MyAnnotation.class);} catch (NoSuchMethodException e) {e.printStackTrace();}return "loation(sub):" + subMyAnnotation.location() + "\n" +"location:" + myAnnotation.location() + "\n" +"location:" + myAnnotation1.location();}
}

 测试

前端访问:http://localhost:8080/hello/test

结果

loation(sub):location(my)
location:
location:location(my)


http://www.ppmy.cn/news/1113203.html

相关文章

在四维轻云中,能够上传哪些地理空间数据?

四维轻云是一款地理空间数据在线管理软件,支持各类地理空间数据的在线管理、浏览及分享,用户可不受时间地点限制,随时随地上传、管理、查看及分享各类地理空间数据。软件还具有项目管理、场景搭建、素材库等功能模块,支持在线协作…

03MyBatis-Plus中的常用注解

常用注解 TableName MyBatis-Plus根据BaseMapper中指定的泛型(实体类型名)确定数据库中操作的表,如果根据实体类型名找不到数据库中对应的表则会报表不存在异常 //向表中插入一条数据 Test public void testInsert(){User user new User(null, "张三", 23, "…

ubuntn20.4安装git

首先进行安装git: sudo apt-get install git -y 查看安装的git版本: git --version 创建文件夹放置git仓库: mkdir gitcode cd gitcode/ git init 再使用la命令查看是否有.git隐藏文件(不允许在.git下手动修改,…

QT网页 webengine / CEF

QT WebEngine 官方文档 WebEngine 架构: 能看到 WebEngine 有一个核心模块是基于 Chromium 构造的,通过使用 Chromium 的Blink渲染引擎和V8 JavaScript引擎来处理和渲染Web内容,并将这些底层技术封装为一系列高级的C类和接口,以…

Java集合之LinedList

LinedList类实现了List接口,他提供了(双向的)链表数据结构 在该链表中的每一个元素除了存储本身的内容之外还存储指向前一个元素的指针和指向后一个元素的指针,下图展示了一个包含三个元素的双向链表,每个链表都有一个…

无涯教程-JavaScript - AGGREGATE函数

描述 返回列表或数据库中的聚合。 AGGREGATE函数可以将不同的聚合函数应用于列表或数据库,并且可以选择忽略隐藏的行和错误值。 AGGREGATE函数具有两种不同的格式- 参考格式数组格式 参考格式 语法 AGGREGATE (function_num, options, ref1, [ref2] …)争论 Argument描述…

Spring Boot整合Lombok全过程及详细用法

介绍 Lombok是一个Java库,它通过注解的方式简化了Java代码的编写。它可以自动为我们生成一些常见的方法和代码,如getter和setter方法、构造函数以及toString()方法等。在Spring Boot项目中使用Lombok可以大大减少冗余的代码,使代码更加简洁和…

【Nacos】Nacos服务注册服务端源码分析(一)

上篇简单看了下Nacos客户端在服务注册时做了什么。 本篇开始分析Nacos在服务注册时,服务端的相关逻辑。 建议先阅读这篇文章:支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型 回顾一下,上篇我们看了Nacos在服务注册时&a…