一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Spring中@Autowire注入的深入講解

Spring中@Autowire注入的深入講解

2020-09-21 00:26Real dream Java教程

這篇文章主要給大家介紹了關(guān)于Spring中@Autowire注入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一直在思考spring的@Autowire注入屬性時(shí)到底是按類型注入還是按名稱注入,今天寫(xiě)了一個(gè)測(cè)試來(lái)證明一下。

定義接口TestService

?
1
2
3
public interface TestService {
 void test();
}

定義接口實(shí)現(xiàn):TestServiceImpl1和TestServiceImpl2

?
1
2
3
4
5
6
7
@Service
public class TestServiceImpl1 implements TestService {
 
 public void test() {
  System.out.println(1111);
 }
}
?
1
2
3
4
5
6
7
@Service
public class TestServiceImpl2 implements TestService {
 
 public void test() {
  System.out.println(2222);
 }
}

定義一個(gè)bean依賴TestService,

?
1
2
3
4
5
6
7
8
9
10
@Controller
public class TestController {
    //此時(shí)的beanBame=testService
 @Autowired
 TestService testService;
 
 public void test(){
  testService.test();
 }
}

編寫(xiě)測(cè)試類:

?
1
2
3
4
5
6
7
8
9
10
11
@Configuration
@ComponentScan("test")
public class Test {
 public static void main(String[] args) {
  AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext();
  context.register(Test.class);
  context.refresh();
  TestService bean = context.getBean(TestService.class);
  bean.test();
 }
}

啟動(dòng)項(xiàng)目跟蹤源碼:在spring工廠初始化Bean填充屬性的時(shí)候,AbstractAutowireCapableBeanFactory.populateBean()方法中會(huì)執(zhí)行后置處理器AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues() ,繼續(xù)跟蹤,在DefaultListableBeanFactory.doResolveDependency()方法中的findAutowireCandidates()根據(jù)類型匹配到兩個(gè)Bean,見(jiàn)截圖:

Spring中@Autowire注入的深入講解

由于獲取的Bean超過(guò)兩個(gè),spring會(huì)根據(jù)名稱去匹配,如果匹配成功則返回對(duì)應(yīng)的bean;如果匹配失敗,則會(huì)拋出異常。如圖:

Spring中@Autowire注入的深入講解

到此為止,我們已經(jīng)能發(fā)現(xiàn)@Autowire注解注入屬性的原理:先根據(jù)類型注入,如果獲取到多個(gè)Bean,則根據(jù)名稱匹配,若名稱未匹配上就拋出異常。

總結(jié)

到此這篇關(guān)于Spring中@Autowire注入的文章就介紹到這了,更多相關(guān)Spring中@Autowire注入內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/qq_39600860/article/details/108678305

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内揄拍国内精品久久 | 国产成人a∨麻豆精品 | 504神宫寺奈绪大战黑人 | 国产成人综合一区精品 | 午夜精品网 | 污黄在线观看 | 黑人巨茎大战欧美白妇 | 狠狠撸在线播放 | 深夜啪啪网站 | 亚洲视频在线观看地址 | 亚洲天堂视频在线播放 | 波多野结衣一区免费作品 | 暖暖免费高清完整版观看日本 | 我要看黄色毛片 | 欧美8x8x | 香蕉eeww99国产在线观看 | 国内外成人在线视频 | 青青青在线观看国产精品 | 2021国产麻豆剧传媒剧情 | 国产欧美精品专区一区二区 | 亚洲精品日韩专区在线观看 | 免费欧美一级 | free性泰国女人hd | 亚洲一区二区三区福利在线 | 美女班主任让我爽了一夜视频 | 2012年中文字幕在线看 | 波多野结中文字幕在线69视频 | 禁忌4中文| 黑人粗长大战亚洲女 | pregnantxxx孕交| 高清视频在线观看+免费 | 晓雪老师我要进你里面好爽 | 欧美深夜在线 | 天天综合天天综合 | 青青草99久久精品国产综合 | 亚洲不卡视频在线观看 | 沟厕okn系列在线播放 | 亚洲免费视频一区二区三区 | 四虎精品免费国产成人 | 亚洲va欧美va国产va天堂影 | 亚洲 欧美 偷自乱 图片 |