欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot?AnnotationUtils工具類的使用實例詳解

 更新時間:2022年09月29日 14:26:53   作者:fengyehongWorld  
這篇文章主要介紹了SpringBoot?AnnotationUtils工具類的使用,使用自定義注解標記業(yè)務(wù)方法,原生Java獲取注解及AnnotationUtils工具類獲取方法,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

一. 前期準備

?若干自定義注解

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface PayCode {

    // 支付方法的業(yè)務(wù)code
    String payCode();
	
    // 支付方法的名稱
    String name();
}
import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface PayOrder {

    int value() default 0;
}
import java.lang.annotation.*;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Version {

    String value() default "0";
}

二. 使用自定義注解標記業(yè)務(wù)方法

@PayCode(payCode = "alia", name = "支付寶支付")
@Component
public class AliaPay {

    @PayOrder(value = 1)
    public void pay() {
        System.out.println("===發(fā)起支付寶支付1===");
    }
}
@PayCode(payCode = "jingdong", name = "京東支付")
@Component
public class JingDongPay {

    @Version(value = "1.1")
    public String version;

    @PayOrder(value = 20)
    public void pay() {
        System.out.println("===發(fā)起京東支付===");
    }
}

三. 原生Java獲取注解

import org.springframework.boot.CommandLineRunner;
import org.springframework.util.ReflectionUtils;
@Component
public class ZTestController implements CommandLineRunner {
    @Resource
    private AliaPay aliaPay;
	@Resource
    private JingDongPay jingDongPay;

    @Override
    public void run(String... args) throws Exception {

        // ?原生Java的方式獲類上的注解
        PayCode aliPay = aliaPay.getClass().getAnnotation(PayCode.class);
        System.out.println(aliPay);
        // @com.example.jmw.common.annotation.PayCode(payCode=alia, name=支付寶支付)
		
		 // ?原生Java的方式獲取屬性上的注解
        Field versionField = ReflectionUtils.findField(jingDongPay.getClass(), "version");
        Version version = versionField.getAnnotation(Version.class);
    }
}

四. AnnotationUtils工具類獲取

4.1 AnnotationUtils.findAnnotation獲取類注解

// AnnotationUtils的方式獲取指定類上的注解
import org.springframework.core.annotation.AnnotationUtils;

PayCode aliPay = AnnotationUtils.findAnnotation(aliaPay.getClass(), PayCode.class);

4.2 AnnotationUtils.findAnnotation獲取方法注解

import org.springframework.util.ReflectionUtils;
import org.springframework.core.annotation.AnnotationUtils;

// 通過反射獲取aliaPay對象上的pay方法的Method對象
Method payMethod = ReflectionUtils.findMethod(aliaPay.getClass(), "pay");
// 獲取方法上的注解
PayOrder payOrder = AnnotationUtils.findAnnotation(payMethod, PayOrder.class);

4.3 AnnotationUtils.getValue獲取注解上的指定屬性值

// AnnotationUtils的方式獲取指定類上的注解
PayCode aliPayAnnotation = AnnotationUtils.findAnnotation(aliaPay.getClass(), PayCode.class);
// 獲取注解上指定的值
Object payCode = AnnotationUtils.getValue(aliPayAnnotation, "payCode");

4.4 AnnotationUtils.getAnnotationAttributes獲取注解上的所有屬性值

// 獲取注解上所有的屬性值
PayCode aliPay = AnnotationUtils.findAnnotation(aliaPay.getClass(), PayCode.class);
Map<String, Object> annotationAttributes = AnnotationUtils.getAnnotationAttributes(aliPay);

到此這篇關(guān)于SpringBoot AnnotationUtils工具類的使用的文章就介紹到這了,更多相關(guān)SpringBoot AnnotationUtils工具類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring cloud 使用Eureka 進行服務(wù)治理方法

    spring cloud 使用Eureka 進行服務(wù)治理方法

    這篇文章主要介紹了spring cloud 使用Eureka 進行服務(wù)治理方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 使用java實現(xiàn)銀行家算法

    使用java實現(xiàn)銀行家算法

    這篇文章主要為大家詳細介紹了如何使用java實現(xiàn)銀行家算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 詳解Java 打印堆棧的幾種方法

    詳解Java 打印堆棧的幾種方法

    本篇文章主要介紹了Java 打印堆棧的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java鍵盤錄入Scanner類的使用方法詳析

    Java鍵盤錄入Scanner類的使用方法詳析

    在Java編程中,引用數(shù)據(jù)類型是用來存儲對象的引用(地址),而Scanner類是引用數(shù)據(jù)類型的一種,用于讀取輸入數(shù)據(jù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • Java使用ChatGPT的API詳解

    Java使用ChatGPT的API詳解

    OpenAI API 幾乎可以應(yīng)用于任何涉及理解或生成自然語言或代碼的任務(wù)。本文將帶你們介紹Java如何使用ChatGPT的API,感興趣的同學可以跟著小編一起來學習
    2023-04-04
  • java如何將list中的某個元素移動位置

    java如何將list中的某個元素移動位置

    在Java編程中我們經(jīng)常會使用List數(shù)據(jù)結(jié)構(gòu)來存儲一組元素,下面這篇文章主要給大家介紹了關(guān)于java如何將list中的某個元素移動位置的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Java中迭代器Iterator的使用解析

    Java中迭代器Iterator的使用解析

    Java采用了迭代器來為各種容器提供了公共的操作接口,下面通過本文給大家分享Java中迭代器Iterator的使用解析,需要的朋友參考下吧
    2017-09-09
  • 從HelloWorld和文檔注釋開始入門Java編程

    從HelloWorld和文檔注釋開始入門Java編程

    這篇文章主要介紹了從HelloWorld和文檔注釋開始入門Java編程,涉及到Javadoc工具的使用,需要的朋友可以參考下
    2015-10-10
  • idea提交文件時如何忽略某些文件的提交

    idea提交文件時如何忽略某些文件的提交

    這篇文章主要介紹了idea提交文件時如何忽略某些文件的提交問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 在日志中記錄Java異常信息的正確姿勢分享

    在日志中記錄Java異常信息的正確姿勢分享

    這篇文章主要介紹了在日志中記錄Java異常信息的正確姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論