最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一. 前期準備

?若干自定義注解

import java.lang.annotation.*;

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

    // 支付方法的業(yè)務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è)務方法

@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)文章

  • Java8新特性之lambda的作用_動力節(jié)點Java學院整理

    Java8新特性之lambda的作用_動力節(jié)點Java學院整理

    我們期待了很久lambda為java帶來閉包的概念,但是如果我們不在集合中使用它的話,就損失了很大價值。現(xiàn)有接口遷移成為lambda風格的問題已經(jīng)通過default methods解決了,在這篇文章將深入解析Java集合里面的批量數(shù)據(jù)操作解開lambda最強作用的神秘面紗。
    2017-06-06
  • idea啟動報錯:Command line is too long問題

    idea啟動報錯:Command line is too long問題

    在使用IDEA時,若遇到"Commandlineistoolong"錯誤,通常是因為命令行長度超限,這是因為IDEA通過命令行或文件將classpath傳遞至JVM,操作系統(tǒng)對命令行長度有限制,解決方法是切換至動態(tài)類路徑,通過修改項目的workspace.xml文件
    2024-09-09
  • Java?json轉(zhuǎn)換實體類(JavaBean)及實體類(JavaBean)轉(zhuǎn)換json代碼示例

    Java?json轉(zhuǎn)換實體類(JavaBean)及實體類(JavaBean)轉(zhuǎn)換json代碼示例

    這篇文章主要介紹了兩種常見的JSON與Java實體類相互轉(zhuǎn)換的方法,分別是使用庫Jackson、Gson、Fastjson和在線工具,無論是將JSON轉(zhuǎn)換為Java實體類還是將Java實體類轉(zhuǎn)換為JSON,這些方法都能顯著簡化開發(fā)過程,需要的朋友可以參考下
    2024-12-12
  • Java實現(xiàn)word/pdf轉(zhuǎn)html并在線預覽

    Java實現(xiàn)word/pdf轉(zhuǎn)html并在線預覽

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)word、pdf文件轉(zhuǎn)html并在線預覽的功能,文中的示例代碼講解詳細,需要的可以參考一下
    2023-05-05
  • Java結(jié)合百度云存儲BCS代碼分享

    Java結(jié)合百度云存儲BCS代碼分享

    最近云是一個很熱門的新概念,仿佛任何東西只要跟云相關(guān)聯(lián),就立馬高大上起來,額,我們也追隨潮流吧,項目中也結(jié)合一下云?。?/div> 2014-10-10
  • Java實現(xiàn)克魯斯卡爾算法的示例代碼

    Java實現(xiàn)克魯斯卡爾算法的示例代碼

    克魯斯卡爾算法是一種用于求解最小生成樹問題的貪心算法。這篇文章主要為大家詳細介紹了Java實現(xiàn)克魯斯卡爾算法的方法,需要的可以參考一下
    2023-04-04
  • Java用?Gradle配置compile及implementation和api的區(qū)別

    Java用?Gradle配置compile及implementation和api的區(qū)別

    這篇文章主要介紹了Java用Gradle配置compile及implementation和api的區(qū)別,文章圍繞主題的相關(guān)資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Java實現(xiàn)網(wǎng)絡數(shù)據(jù)提取所需知識點

    Java實現(xiàn)網(wǎng)絡數(shù)據(jù)提取所需知識點

    這篇文章主要介紹了Java實現(xiàn)網(wǎng)絡數(shù)據(jù)提取所需知識點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • springBoot連接遠程Redis連接失敗的問題解決

    springBoot連接遠程Redis連接失敗的問題解決

    本文主要介紹了springBoot連接遠程Redis連接失敗的問題解決,使用springboot里面的redisTemplate進行連接的時候,卻發(fā)生了報錯,下面就來一起解決一下
    2024-05-05
  • Java8?Stream流根據(jù)多個字段去重

    Java8?Stream流根據(jù)多個字段去重

    這篇文章主要介紹了Java8?Stream流根據(jù)多個字段去重,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

江油市| 临清市| 山阴县| 阿坝| 武安市| 通道| 尼勒克县| 南郑县| 精河县| 西乌| 色达县| 禹城市| 咸宁市| 南乐县| 肇源县| 井陉县| 长武县| 东源县| 怀仁县| 盐源县| 德兴市| 汉中市| 洞头县| 扶绥县| 兰西县| 沙湾县| 蓝山县| 溧阳市| 仁布县| 呼伦贝尔市| 绍兴县| 秦皇岛市| 加查县| 克什克腾旗| 沐川县| 紫云| 女性| 平潭县| 隆安县| 泸州市| 永昌县|