SpringBoot中自定义注解

简介: SpringBoot中自定义注解

注解


1. 元注解


元注解就是定义注解的注解,是Java提供的用于定义注解的基本注解

image.png

1.1 @Target


该注解的作用是告诉java将自定义的注解放在什么地方,比如类、方法、构造器、变量上等


它的值是一个枚举类型,有以下属性值


  • ElementType.CONSTRUCTOR:用于描述构造器
  • ElementType.FIELD:用于描述成员变量、对象、属性
  • ElementType.LOCAL_VARIABLE:用于描述局部变量
  • ElementType.METHOD:用于描述方法
  • ElementType.PACKAGE:用于描述包
  • ElementType.PARAMETER:用于描述参数
  • ElementType.TYPE:用于描述类、接口或enum枚举声明


1.2 @Retention


该注解用于说明自定义注解的生命周期,在注解中有三个生命周期

  • RetentionPolicy.RUNTIME:始终不会丢弃,运行期也保留该注解,可以使用反射机制读取该注解的信息
  • RetentionPolicy.CLASS:类加载时丢弃,默认使用这种方式
  • RetentionPolicy.SOURCE:编译阶段丢弃,自定义注解在编译结束之后就没有意义,所以不会写进字节码,熟悉的

@Override就属于这种


1.3 @Inherited


该注解是一个标记注解,表明被标记的类型是可以被继承的。如果一个使用这个标记的注解被使用了,那么该类的子类也会用到这个注解


1.4 @Documented


该注解表示是否将注解信息添加在java文档中


1.5 @interface


该注解用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数,方法名称就是参数名称,返回值类型就是参数的类型


2. 实现一个自定义注解


首先创建一个自定义注解


package com.example.demo;
 import org.springframework.stereotype.Component;
 import java.lang.annotation.*;
 @Target({ElementType.METHOD,ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Component
 public @interface MyAnnotation {
     String value();
 }
复制代码


然后编写一个业务逻辑,这里就是拦截被自定义注解的方法,然后在控制台打印注解参数


package com.example.demo;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
 import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.stereotype.Component;
 import java.lang.reflect.Method;
 @Aspect
 @Component
 public class TestAnnotationAspect {
     @Pointcut("@annotation(com.example.demo.MyAnnotation)")
     public void myAnnotationPointCut(){}
     @Before("myAnnotationPointCut()")
     public void before(JoinPoint joinPoint)throws Throwable{
         MethodSignature sign=(MethodSignature) joinPoint.getSignature();
         Method method=sign.getMethod();
         MyAnnotation annotation=method.getAnnotation(MyAnnotation.class);
         System.out.println("Test Annotation参数:"+annotation.value());
     }
 }
复制代码


最后实现一个Controller,访问页面的时候查看业务逻辑是否被打印


package com.example.demo;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 @RestController
 public class TestAnnotationController {
     @GetMapping("/test")
     @MyAnnotation("测试自定义注解")
     public String test(){
         return "shelgi";
     }
 }
复制代码


运行结果如下


image.png

目录
相关文章
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
52 0
|
2月前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
146 3
|
26天前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
39 4
|
1月前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
63 4
SpringBoot必须掌握的常用注解!
|
26天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
80 2
|
26天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
42 2
|
29天前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
36 2
|
29天前
|
JSON Java 数据格式
springboot常用注解
@RestController :修饰类,该控制器会返回Json数据 @RequestMapping(“/path”) :修饰类,该控制器的请求路径 @Autowired : 修饰属性,按照类型进行依赖注入 @PathVariable : 修饰参数,将路径值映射到参数上 @ResponseBody :修饰方法,该方法会返回Json数据 @RequestBody(需要使用Post提交方式) :修饰参数,将Json数据封装到对应参数中 @Controller@Service@Compont: 将类注册到ioc容器
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
41 2
|
2月前
|
XML Java 数据格式
Spring从入门到入土(bean的一些子标签及注解的使用)
本文详细介绍了Spring框架中Bean的创建和使用,包括使用XML配置文件中的标签和注解来创建和管理Bean,以及如何通过构造器、Setter方法和属性注入来配置Bean。
80 9
Spring从入门到入土(bean的一些子标签及注解的使用)