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

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

模仿Spring手寫一個簡易的IOC

瀏覽:146日期:2023-07-31 10:12:20

這個小項目是我讀過一點Spring的源碼后,模仿Spring的IOC寫的一個簡易的IOC,當然Spring的在天上,我寫的在馬里亞納海溝,哈哈

感興趣的小伙伴可以去我的github拉取代碼看著玩

地址: https://github.com/zhuchangwu/CIOC

項目中有兩種方式實現IOC:

第一種是基于dom4j實現的解析XML配置文件版 第二種是基于自定義注解實現全配置版

全注解版

模仿Spring原生的IOC機制如下:

Interface類型的beanDefinition不會被實例化** String類型的beanDefinition不會被實例化 維護三個核心的map容器

使用底層存放實例化對象的容器是一個叫singletonObjects的CurrentHashMap

第二個用來輔助解決循環依賴的容器叫singletonFactories類型:CurrentHashMap 第三個用來存放bean定義信息的map容器叫beanDefinitionMap類型:CurrentHashMapSpring底層的自己還封裝了BeanDefinition, 當然我沒干這件事,直接用的類的描述對象 Class

自定義了四種注解如下:

CDao 用于標識持久層的對象

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface CDao { String value()default '';}

CService 用來標識服務層的對象

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface CService { String value()default '';}

CComponentScan 用來標識主配置類,提供包掃描需要的base-packet

@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})public @interface CComponentScan { String value()default '';}

CAutowired 用來標識需要自動裝配的對象

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface CAutowired { String value()default '';}

當然他跟Spring原生的@Autowired是沒法比的,Spring自動裝配類型默認是Autowired_no, 但是被Spring原生標記上的對象會先按照默認的裝配類型進行裝配,如果沒有默認的裝配類型,再按照byType,如果容器中存在多個相同類型的對象,就按照byName, 名字再一樣就直接報錯了

另外我說一下,說了這么多byName和byType, 那么byName,是通過哪個name呢? 如果是基于setter方法的話就是setter去掉set后,后面的名字, 如果是通過@Autowired的byName,這個name其實就是屬性名

Spring是允許程序員去改這個默認的裝配類型的

然后在我的IOC中就比較遜色了,直接默認按照byType,沒有合適的類型再按照byName進行自動裝配

解決了循環依賴的問題

在我手動寫如何解決循環依賴的時候,那時候我還沒有去看源碼, 當時我畫了幾個流程圖,但是還是卡殼了, 于是我去調試Spring的實現, 簡直了!Spring的作者們簡直是真神!其實說Spring如何解決循環依賴的,我前面有幾個源碼閱讀的博客,感興趣可以去看看

這里我就簡單的說下, 這件事是一個叫AutowiredAnnotationBeanDefinitonPostprocessor的后置處理器完成的, Spring在做這件事是時候,前前后后是一個偌大的繼承體系在支持,但是歸根結底是Spring玩了個漂亮的遞歸,方法名是getBean(),當然這個遞歸還有幾個輔助容器,這幾個容器就是我上面說的幾個map ,我的IOC能寫成,就得益于這一點

XML版

注解版的IOC我是用DOM4j解析XML配置文件實現的, 做了下面的功能

支持setter方法依賴注入標識性的信息是 property

<bean class='com.changwu.dao.DaoImpl1'></bean><bean class='com.changwu.service.UserServiceImpl4'> <property ref='dao1' name='daoImpl'></property></bean>

支持構造方法的依賴注入

標識性的信息是 constructor-arg

<bean class='com.changwu.dao.DaoImpl1'></bean><bean class='com.changwu.service.UserServiceImpl3'> <constructor-arg ref ='DaoImpl' name='DaoImpl1'></constructor-arg></bean></bean>

支持byType的自動裝配標識性的信息是 byType

<beans default-autowire='byType'>

主持byName的自動裝配

<beans default-autowire='byName'>

以上就是模仿Spring手寫一個簡易的IOC的詳細內容,更多關于手寫IOC的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品欧美| 日本免费在线视频不卡一不卡二| 国产精品综合色区在线观看| 日本va欧美va欧美va精品| 欧美久久久网站| 国产精品对白| www在线观看黄色| 五月婷婷六月综合| 另类国产ts人妖高潮视频| 亚洲视频电影在线| 日韩va亚洲va欧美va久久| 国产欧美亚洲一区| 国产欧美日韩亚洲一区二区三区| 国产精品一二| 一区二区三区四区日本视频| 99香蕉国产精品偷在线观看| 欧美一区成人| 久久精品一区| 91精品精品| 日韩一区二区三免费高清在线观看| 日韩精品社区| 久久成人高清| 99精品视频在线| 中文字幕av亚洲精品一部二部| 视频一区二区三区在线| 国产精品亚洲四区在线观看| 日韩综合在线| 久久国产精品美女| 免费成人网www| 五月激激激综合网色播| 国产精品天堂蜜av在线播放| 欧美激情精品| 国产中文一区| 欧美影院视频| 日本国产精品| 日本成人在线不卡视频| 久久影院午夜精品| 亚洲精品第一| 蜜臀久久精品| 欧美亚洲二区| 婷婷精品视频| 久久狠狠久久| 久久99高清| 好看不卡的中文字幕| 欧美黑人巨大videos精品| 亚洲午夜黄色| 国产日韩欧美一区| av亚洲在线观看| 久久久久亚洲精品中文字幕| 亚洲欧美日韩国产一区二区| 国产一区二区三区四区五区传媒| av亚洲免费| 美女尤物国产一区| 亚洲一区二区小说| 青青久久av| 日本不卡视频一二三区| 免费视频亚洲| 日韩va亚洲va欧美va久久| 久久人人99| 国产精品视频首页| 欧美专区一区二区三区| 免费一二一二在线视频| 青青青国产精品| 精品91久久久久| 午夜精品成人av| 国产午夜精品一区在线观看| 夜夜精品视频| 成人国产精选| 亚洲一区二区小说| 91精品一区二区三区综合在线爱| 欧美视频精品全部免费观看| 99久久www免费| 欧美久久一区二区三区| 国产精品久久久久av电视剧| 精品中文字幕一区二区三区| 亚洲精品乱码| 丝袜a∨在线一区二区三区不卡| 999久久久精品国产| 成人污污视频| 久久久免费人体| 国产精久久久| 日韩精品福利一区二区三区| 在线看片日韩| 亚洲一区二区三区久久久| 91成人精品| 欧美成人高清| 国产精品试看| 久久精品卡一| 日韩精品看片| 五月天久久久| 日韩午夜电影| 久久国产精品久久久久久电车| 欧美在线亚洲| 午夜欧美精品| 免费欧美日韩| 日本一区二区三区中文字幕| 91精品福利观看| 国产探花一区在线观看| 国产精品免费不| 久久三级中文| 欧美国产一级| 久久久精品五月天| 成人综合一区| 91精品韩国| 欧美~级网站不卡| 国产视频亚洲| 欧美亚洲国产日韩| 久久97视频| 国产成人久久| 今天的高清视频免费播放成人| 午夜av成人| 午夜国产精品视频| 婷婷精品在线观看| 国产精品手机在线播放| 日本一二区不卡| 久久天堂av| 亚洲一区二区成人| 亚洲精品综合| 欧美激情久久久久久久久久久| 国产在线观看www| 蜜桃tv一区二区三区| 亚洲深深色噜噜狠狠爱网站 | 国产麻豆一区二区三区| 精品视频自拍| 国产一区二区三区自拍| 日本中文字幕一区二区视频| 久久精品国产福利| 欧美在线亚洲| 国产免费播放一区二区| 中文字幕在线视频久| 另类亚洲自拍| 日本午夜精品一区二区三区电影 | av在线资源| 亚洲一区二区动漫| 国产精品玖玖玖在线资源| 日韩黄色大片网站| 少妇精品久久久| 国产福利电影在线播放| 一区二区自拍| 欧美影院精品| 99久久夜色精品国产亚洲1000部| 日韩欧美中文字幕一区二区三区| 久久av影院| 99国产精品久久久久久久| 国产精品日韩精品中文字幕| 日韩精品免费一区二区在线观看| 久久国产精品亚洲77777| 美女国产一区二区三区| 中文在线不卡| 国产精品成人a在线观看| 蜜桃av一区二区在线观看| 美女在线视频一区| 喷白浆一区二区| 日韩啪啪电影网| 日韩av三区| 91久久在线| 黄毛片在线观看| 久热精品在线| 色婷婷狠狠五月综合天色拍| 国产日韩欧美一区二区三区| 黑丝一区二区| 三上悠亚国产精品一区二区三区 | 中文视频一区| 欧美一区二区三区高清视频 | 日韩av一区二区三区| 国产综合激情| 欧美www视频在线观看| 久久亚洲风情| 香蕉精品久久| 成人在线黄色| 久久不卡国产精品一区二区| 中文字幕av一区二区三区人| 久久久9色精品国产一区二区三区| 国产精品巨作av| 日韩精品福利一区二区三区| 免费日韩精品中文字幕视频在线| 久久久噜噜噜| 精品国产免费人成网站| 国产欧美高清| 日韩中出av| 视频一区中文字幕国产| 欧美亚洲国产精品久久| 久久影视三级福利片| 日韩精品免费一区二区夜夜嗨| 91久久午夜| 一区二区三区视频免费观看| 久久久久国产| 深夜视频一区二区| 鲁鲁在线中文| 久久久久久色 | 日韩欧美1区| 久久女人天堂| 欧美国产极品| 国产福利亚洲| 国产精品对白久久久久粗| 青草国产精品| 日韩欧美在线精品| 午夜视频一区二区在线观看| 影音先锋久久精品| 亚洲一区二区三区久久久|