日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何用Java注解和反射實現依賴注入

瀏覽:134日期:2022-08-13 09:12:46
概述

在Spring中,我們可以通過 @Autowired注解的方式為一個方法中注入參數,那么這種方法背后到底發生了什么呢,這篇文章將講述如何用Java的注解和反射實現一個“低配版”的依賴注入。

下面是我們要做的一些事情:

通過 @interface的方式定義一個注解 為某個希望杯被注入的方法添加這個注解 編寫測試代碼,通過反射獲取添加了注解的方法對應的Method對象,將該方法對象設置為可訪問的,通過反射創建對象并調用這個方法,同時注入依賴數據

如上所述,我們分為三個步驟, 去加工出這個低配版的依賴注入,下面就來講講每一步的詳細步驟

我們要編寫的代碼的結構分為三部分:

Autowired: 聲明的注解 Demo類:含有被依賴注入的方法 setStrTest類:通過反射獲取被Autowired注解的方法,并進行依賴注入定義注解

Autowired

@Retention(RetentionPolicy.RUNTIME)public @interface Autowired {}

首先我們通過 @interface的方式定義的一個注解, 由此也可以看出注解的地位和類,接口類似,是一種同一級的關系

@Retention是元注解,故名思義,它是用來注解(動詞)注解(名詞)的注解!(名詞),RetentionPolicy.RUNTIME 表示會將這個注解保留到運行時,這樣的話我們就能通過反射去處理注解了。

為被注入的方法添加注解

下面我們為setStr方法添加一個注解

public class Demo { private String str; @Autowired public void setStr (String str) { this.str = str; } public String getStr () {return str; }}通過反射處理注解

通過反射的方式獲取并處理被注解的方法,將該方法對象設置為可訪問的,通過反射創建對象并調用這個方法,同時注入依賴數據

由于涉及到大量關于反射的API,所以對于反射機制話可以看看我以前寫的這篇文章: https://www.cnblogs.com/penghuwan/p/7580145.html

在這一步驟我們要做的事情:

1.調用Class.forName方法,傳入某個類的路徑字符串為參數,獲取該類的Class對象

2.通過調用該類Class對象的getDeclaredMethods方法,獲得聲明方法對應的Methods對象組成的數組

3.遍歷2中的Methods數組,通過調用Method對象的isAnnotationPresent方法判斷該方法有沒有加上Autowired注解,并對其中加上Autowired注解的方法做以下處理

4.通過調用Method對象的setAccessible(true);方法將對象設置為可訪問的,不這么搞下一步調用方法會出錯

5.通過Class對象的newInstance方法創建對象實例,假設其為object,則再通過method.invoke(object, “傳入的數據')調用對象的方法,注入依賴數據

6.將5中的對象實例object返回, 我們就獲得了被注入了依賴數據的對象實例了

代碼如下:

Test.java

import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Test { /** * 這個方法會將一段文本注入到某個類中添加了@Autowired注解的方法中,并將實例對象返回 */ public static Object injectStrToInstance (String ClassName,String str) throws ClassNotFoundException {// 獲取Demo的Class對象Class demoClass = Class.forName(ClassName);// 從Class對象中獲取Demo中聲明方法對應的Method對象Method [] methods = demoClass.getDeclaredMethods();for (Method method : methods) { // 判斷方法是否被加上了@Autowired這個注解 if(method.isAnnotationPresent(Autowired.class)) {// 將方法設置為可調用的method.setAccessible(true);try { Object object = demoClass.newInstance(); // 調用method方法,向其中注入str字符串 method.invoke(object,str); return object;} catch (IllegalAccessException e) { e.printStackTrace();} catch (InvocationTargetException e) { e.printStackTrace();} catch (InstantiationException e) { e.printStackTrace();} }}return null; } public static void main (String args []) throws ClassNotFoundException {// 進行依賴注入,并取得注入后的Demo的對象實例 Demo demo1 = (Demo)injectStrToInstance('Demo', '我是被注入的文本'); // 輸出一下看看我們的文本是不是被成功注入進去了 System.out.println(demo1.getStr()); }}

輸出結果:

我是被注入的文本

到此為止, 我們就完成了這個低配版的依賴注入了

以上就是如何用Java注解和反射實現依賴注入的詳細內容,更多關于Java注解和反射實現依賴注入的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕日本一区二区| 怡红院精品视频在线观看极品| 日韩精品欧美激情一区二区| 91欧美日韩| 日韩大片在线观看| 久久亚洲在线| 91久久黄色| 亚洲影院天堂中文av色| 伊人精品久久| 91成人在线网站| 国产精品一区二区av交换| 国产精品久久久久久久久久齐齐| 麻豆精品视频在线观看视频| 精品国产aⅴ| 日韩成人亚洲| 欧美亚洲在线日韩| 亚洲一区二区成人| 综合激情视频| 亚欧洲精品视频在线观看| 欧美三区不卡| 国产va免费精品观看精品视频| 视频福利一区| 蜜桃视频一区二区三区在线观看| 日韩精品成人| 四虎8848精品成人免费网站| 欧美91视频| 日韩高清一区在线 | 欧美亚洲免费| 国产+成+人+亚洲欧洲在线| 成人午夜网址| 欧美肉体xxxx裸体137大胆| 亚洲专区一区| 国产精品密蕾丝视频下载| 岛国av在线网站| 亚洲主播在线| 美女精品视频在线| 国产一区二区三区自拍| 日本成人在线视频网站| 国产成人精选| 国产视频欧美| 国产欧美日韩视频在线 | 国产精品一区高清| 青青久久av| 免费成人在线视频观看| 国产精品亚洲人成在99www| 久久婷婷久久| 欧美影院视频| 久久在线免费| 日韩综合小视频| 神马午夜在线视频| 日韩一区精品视频| 手机在线电影一区| 亚洲三级网站| 日韩和的一区二在线| 亚洲精品影视| 久久在线电影| 麻豆成人在线观看| 国产精品人人爽人人做我的可爱| 欧美日本不卡| 久久精品国产大片免费观看| 欧美日韩一区二区三区四区在线观看| 色88888久久久久久影院| 深夜福利一区| 999国产精品| 国产精品久久久久久久久免费高清| 免费黄色成人| 国产成人精品一区二区免费看京| 最新亚洲一区| 国产不卡人人| 欧美日韩夜夜| 国产日韩综合| 欧美13videosex性极品| 国产美女久久| 亚洲免费网址| 日韩毛片视频| 欧美激情亚洲| 午夜天堂精品久久久久| 久久中文字幕av一区二区不卡| 欧美日韩午夜电影网| 亚洲欧美日韩精品一区二区 | 伊人久久av| 国产伦精品一区二区三区视频| 午夜亚洲福利在线老司机| 日韩免费视频| 国产精品成人自拍| 一区二区国产在线| 婷婷亚洲五月色综合| 久久久久九九精品影院| 日韩精品免费观看视频| 99国产精品| 久久一区二区三区喷水| 国产欧洲在线| 精品精品99| 欧美国产中文高清| 97久久超碰| 欧美视频久久| 日韩中文av| 亚洲免费资源| 在线综合亚洲| 999久久久精品国产| 高清日韩中文字幕| 国产精品宾馆| 国产精品视频一区二区三区四蜜臂| 玖玖玖国产精品| 免费视频国产一区| 久久精品国产亚洲夜色av网站| 国产高潮在线| 国产精品毛片一区二区在线看| 欧美国产另类| 麻豆精品在线观看| 久久精品99久久久| 97成人在线| 91亚洲精品在看在线观看高清| 日韩一区二区三区在线看| 免费在线观看一区二区三区| 亚洲一级在线| 免费观看在线综合| 亚洲精品一二三**| 91成人小视频| 国产黄色精品| 日韩1区在线| 日韩久久一区二区三区| 日韩欧美一区二区三区免费观看| 免费高潮视频95在线观看网站| 日韩深夜视频| 久久国产精品成人免费观看的软件| 国产一区二区三区不卡视频网站| av中文资源在线资源免费观看| 国产v日韩v欧美v| 亚洲成人不卡| 国产一区亚洲| 国产毛片一区| 日韩亚洲精品在线观看| 久久国产尿小便嘘嘘| 国产精品久久久久9999高清| 精品久久久网| 久久久久久久久丰满| 国产精品日韩久久久| 日韩福利视频导航| 精品视频自拍| 久久人人97超碰国产公开结果| 亚洲大全视频| 日韩中文字幕91| 久久国内精品视频| 精品九九在线| 亚洲国产专区校园欧美| 蜜臀91精品一区二区三区| 欧美日韩一区二区三区四区在线观看| 精品伊人久久| 久久精品播放| 亚洲一区av| 国产精品久久久免费| 欧美少妇精品| 国产模特精品视频久久久久| 日本一区二区三区中文字幕| 麻豆精品视频在线观看免费| 在线观看精品| 中文字幕免费一区二区| 久久精品资源| 国产高清一区| 欧美一级全黄| 亚洲成av在线| 亚洲18在线| 四虎成人av| 美女被久久久| 久久wwww| 亚洲精品小说| 国产精品麻豆成人av电影艾秋| 久久久成人网| 欧美日韩一视频区二区| 日韩在线观看| 亚洲精品福利| 六月婷婷综合| 亚洲精选久久| 精品久久网站| 亚洲欧美视频一区二区三区| 国产精品中文字幕制服诱惑| 欧美日韩在线二区| 国产精品中文字幕制服诱惑| 欧美高清一区| 国产精品一区二区三区美女| 不卡一区2区| 国产高清日韩| 国产精品日本欧美一区二区三区| 欧美成a人片免费观看久久五月天| 欧美日韩高清| 国内精品伊人| 亚洲欧洲美洲国产香蕉| 日本免费久久| 国产日韩三级| 香蕉久久99| 欧美激情福利| 中文字幕日本一区二区| 亚洲四虎影院| 欧美国产先锋| 亚洲午夜免费| 亚洲高清成人| 国产在线不卡一区二区三区| 亚洲不卡视频| 一区久久精品|