IT袋

当前位置:主页 > 经验教程 > 建站编程 >

实际工作中哪里用到了自定义注解的方法

实际工作中哪里用到了自定义注解的方法

时间:2024-01-12 15:49:22 来源:IT袋 作者:马勇
导读:实际工作中哪里用到了自定义注解的方法,小编为大家解答实际工作中哪里用到了自定义注解的方法的相关知识,下面小编为您详细解答 自定义注解可以标记在方法上或类上,用于在编译期或运行期进行特定的业

实际工作中哪里用到了自定义注解的方法

小编为大家解答实际工作中哪里用到了自定义注解的方法的相关知识,下面小编为您详细解答

自定义注解可以标记在方法上或类上,用于在编译期或运行期进行特定的业务功能处理。

在Java中,自定义注解使用 @interface 关键字来定义,它可以实现如:日志记录、性能监控、权限校验等功能。

在 Spring Boot 中实现一个自定义注解,可以通过 AOP(面向切面编程)或拦截器(Interceptor)来实现。

实际工作中哪里用到了自定义注解的方法

1.实现自定义注解

下面我们先使用 AOP 的方式来实现一个打印日志的自定义注解,它的实现步骤如下:

  1. 添加 Spring AOP 依赖。
  2. 创建自定义注解。
  3. 编写 AOP 拦截(自定义注解)的逻辑代码。
  4. 使用自定义注解。

具体实现如下。

① 添加 Spring AOP 依赖

在 pom.xml 中添加如下依赖:

<dependencies>
  <!-- Spring AOP dependency -->
  <dependency>
    <groupIdorg.springframework.boot</groupId>
      <artifactIdspring-boot-starter-aop</artifactId>
      </dependency>
</dependencies>

② 创建自定义注解

创建一个新的 Java 注解类,通过 @interface 关键字来定义,并可以添加元注解以及属性。

import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomLogAnnotation {
    String value() default "";
    boolean enable() default true;
}

在上面的例子中,我们定义了一个名为 CustomLogAnnotation 的注解,它有两个属性:value 和 enable,分别设置了默认值。

  • @Target(ElementType.METHOD) 指定了该注解只能应用于方法级别。
  • @Retention(RetentionPolicy.RUNTIME) 表示这个注解在运行时是可见的,这样 AOP 代理才能在运行时读取到这个注解。

③ 编写 AOP 拦截(自定义注解)的逻辑代码

使用 Spring AOP 来拦截带有自定义注解的方法,并在其前后执行相应的逻辑。

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class CustomLogAspect {
    @Around("@annotation(customLog)")
    public Object logAround(ProceedingJoinPoint joinPoint, CustomLogAnnotation customLog) throws Throwable {
        if (customLog.enable()) {
            // 方法执行前的处理
            System.out.println("Before method execution: " + joinPoint.getSignature().getName());
            long start = System.currentTimeMillis();
            // 执行目标方法
            Object result = joinPoint.proceed();
            // 方法执行后的处理
            long elapsedTime = System.currentTimeMillis() - start;
            System.out.println("After method execution (" + elapsedTime + 
                               "ms): " + customLog.value());
            return result;
        } else {
            return joinPoint.proceed();
        }
    }
}

相关阅读

  • 什么是云堡垒机 有哪些功能及优势?

    什么是云堡垒机 有哪些功能及优势?

    今天小编介绍什么是云堡垒机IT技巧方面的经验,接下来IT袋网小编就来介绍。 云堡垒机(Cloud Bastion Host,CBH)是在云计算环境中使用的一种安全工具,类似于传统网络中的堡垒机。 云堡垒机

  • OSI七层网络模型物理层详解 物理层的主要功能和特点有哪些

    OSI七层网络模型物理层详解 物理层的主要功能和特点有哪些

    下面为网友们详细介绍OSI七层网络模型物理层详解的相关话题,接下来一起来看看吧。 物理层是OSI模型中的第一层,它负责在物理媒介上传输原始比特流,并定义了传输介质、传输速率、编码

  • 网站建设开发解决方案 网站设计与规划了解

    网站建设开发解决方案 网站设计与规划了解

    小编为你讲解网站建设开发解决方案和网站设计与规划了解的内容,一定能解决您的问题的,一起来了解吧! 企业网站作为企业在互联网上的形象,对于企业来说是至关重要的,一个好的企业

  • 什么是跨站脚本 XSS攻击?

    什么是跨站脚本 XSS攻击?

    为网友解答什么是跨站脚本的相关话题,下面为详细的介绍。 跨站脚本(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者利用该漏洞在受害者的网页中插入恶意脚本,从而能够获取