首页 > 其他分享 >Spring Boot中 自定义注解

Spring Boot中 自定义注解

时间:2023-04-21 17:37:27浏览次数:36  
标签:自定义 Spring Boot public MyAnnotationProcessor 注解 MyAnnotation

Spring Boot中 自定义注解

  1. 定义一个注解

创建一个Java注解,可以使用@interface关键字来定义,例如:

less
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value() default "";
}

这个注解称为MyAnnotation,并且它具有一个value()属性。

  1. 使用注解

使用MyAnnotation注解,例如:

typescript
@MyAnnotation("This is a custom annotation")
public void myMethod() {
    // method implementation
}

在上面的例子中,我们使用@MyAnnotation注解来注释myMethod()方法,并为value()属性提供了一个字符串值。

  1. 处理注解

使用Spring Boot来处理自定义注解,可以通过以下步骤:

  • 创建一个注解处理器,例如:
java
@Component
public class MyAnnotationProcessor {

    @Autowired
    private MyService myService;

    @Around("@annotation(MyAnnotation)")
    public Object process(ProceedingJoinPoint joinPoint) throws Throwable {
        // 方法执行前的逻辑
        String annotationValue = ((MethodSignature) joinPoint.getSignature())
                .getMethod().getAnnotation(MyAnnotation.class).value();
        // 调用原始方法
        Object result = joinPoint.proceed();
        // 方法执行后的逻辑
        myService.save(annotationValue);
        return result;
    }
}

在上面的例子中,我们创建了一个名为MyAnnotationProcessor的注解处理器,并使用Spring的@Component注解将其声明为一个Spring组件。该处理器中的process()方法将在使用@MyAnnotation注解注释的方法执行前后被调用。

  • 注册注解处理器

将注解处理器注册到Spring Boot应用程序上下文中,例如:

less
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {

    @Bean
    public MyAnnotationProcessor myAnnotationProcessor() {
        return new MyAnnotationProcessor();
    }
}

在上面的例子中,我们创建了一个名为AppConfig的配置类,并使用Spring的@Configuration注解将其声明为一个Spring配置类。使用@EnableAspectJAutoProxy注解启用AspectJ自动代理,并使用@Bean注解创建了一个MyAnnotationProcessor实例,将其注册到Spring应用程序上下文中。

这样,当使用@MyAnnotation注解注释的方法被调用时,Spring将自动调用MyAnnotationProcessor处理器中的process()方法。

标签:自定义,Spring,Boot,public,MyAnnotationProcessor,注解,MyAnnotation
From: https://www.cnblogs.com/securitybob/p/17341154.html

相关文章

  • Spring cloud:开发接口
    @RequestBody支持json格式,前端传过来某类型的数据,后端直接可以用@RequestParam?id=1此类传参,有时候会导致类型不能转换错误例如,前端页面分页,传过来的page、size,在地址栏显示,路径后?id=xx ,两个数据明显是int,如果用了@RequestParam接收多个参数后端以Map接收,不能直接接收,且报类型......
  • spring boot、cloud -yml:显示/show SQL
    logging:level:com.zking.zkingOAS.FDadmin.mapper:debug在控制台显示业务具体执行的SQL,且有参数说明、有多少数据 application.properties:logging.level.com.wochat.mapper=debug ......
  • redis:清空 spring boot注解式
    flushall清空打开D:\ProgramFiles\Java\Redis-x64-3.2.100\redis-cli.exeauth123456flushall  dockerdockerexec-it65e343434e6eredis-cliauth123flushall exit @Cacheable :根据方法的请求参数对其结果进行缓存参数解释examplevalue缓存的名称,在spring配置文......
  • Spring cloud:分布式module
     新增一个业务模块,统一将业务模块放在hc-modeules下在resources资源目录下新增application-properties.yml文件 该文件用来配置注册中心、配置中心信息等..在pom.xml文件添加jar包的依赖以及配置指向的父级<parent> <groupId>com.github.pig</groupId> <artifactId>pig-modu......
  • SpringCloud中使用Apollo实现动态刷新
    SpringSpringBootSpringCloud中使用Apollo实现动态刷新普通字段在需要刷新的字段上使用@value注解即可,例如:@Value("${test.user.name}")privateStringname;@Value("${test.user.age}")privateIntegerage;@Value("${test.user.sex}")......
  • springboot框架快速整合websocket
    1、【pom.xml】<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>2、【MsgType.java】/***@authorJHL*2019-08-109:56*/publicenumM......
  • spring boot项目上传文件
    严重:Servlet.service()forservlet[dispatcherServlet]incontextwithpath[]threwexception[Requestprocessingfailed;nestedexceptionisorg.springframework.web.multipart.MaxUploadSizeExceededException:Maximumuploadsizeexceeded;nestedexception......
  • 数据类型和SpringMvc
    1.Java的八种数据类型和各自取值范围?byte 1      float 4short 2     double 8int 4       boolean true/falselong 8      char  2 2.String属于基本类型吗?String的常用API?string属于Java中的字符串类型,也是一个引用类型,并不属......
  • 【汇智学堂】微服务-SpringBoot环境搭建之一maven下载安装
    一、下载maven3.6.2http://maven.apache.org/download.cgi下载完成后,解压到某个目录。本人目录如下。(C:\Users\leilei\Desktop\apache-maven-3.6.2-bin\apache-maven-3.6.2)二、配置环境变量系统环境变量里,添加MAVEN_HOME(或M2_HOME),其值为C:\Users\leilei\Desktop\apache-maven......
  • 【汇智学堂】docker+springboot+mysql之二(springboot打包发送至Ubuntu dockermysql目
    IDEA:DockerfileContent:FROMjava:8VOLUME/tmpADDhellodocker-0.0.1-SNAPSHOT.jar/app.jarRUNsh-c'touch/app.jar'ENVJAVA_OPTS=""ENTRYPOINT["sh","-c","java$JAVA_OPTS-Djava.security.egd=file:/dev/.......