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

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

模仿Spring手寫一個簡易的IOC

瀏覽:150日期: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在线| 99精品在线免费在线观看| 日韩一二三区在线观看| 国内亚洲精品| 久久香蕉精品香蕉| 日本午夜精品久久久| 视频一区二区国产| 久久久久久色 | 亚洲精品国产嫩草在线观看 | 欧美一级鲁丝片| av在线最新| 亚洲一区成人| 亚洲一本视频| 日韩免费av| 国产不卡精品在线| 欧美91在线|欧美| 国产欧美一区二区三区国产幕精品| 一区二区国产精品| 色在线中文字幕| 国产精品久久久久久久久久10秀 | 精品国产a一区二区三区v免费| 久久中文精品| 欧美日韩xxxx| 奇米亚洲欧美| 亚洲精品视频一二三区| 国产亚洲毛片在线| 午夜亚洲精品| 国产偷自视频区视频一区二区| 日韩高清在线不卡| 91久久视频| 狠狠色狠狠色综合日日tαg| 日韩亚洲精品在线| 欧美aa在线观看| 亚洲深夜视频| 精精国产xxxx视频在线野外 | 欧美男人天堂| 国产精品日本一区二区三区在线| 欧美黄色网页| 日韩精品一区二区三区免费观看| 亚洲精品伦理| 婷婷精品在线观看| 中文久久精品| 婷婷亚洲成人| 国产日韩欧美一区在线| 欧美日韩一区二区三区四区在线观看| 欧美一级鲁丝片| 麻豆mv在线观看| 日韩高清成人| 日韩一区二区免费看| 午夜视频精品| 免费欧美在线视频| 欧美一区在线观看视频| 国产精品自在| sm久久捆绑调教精品一区| 天堂а√在线最新版中文在线| 蜜桃久久久久久久| 日韩午夜av| 亚洲综合精品四区| 97久久超碰| 精品欧美日韩精品| 黑森林国产精品av| 99精品99| 天海翼精品一区二区三区| 欧美精品不卡| 中文字幕系列一区| 一区二区国产在线| 久久久久伊人| 午夜欧美精品久久久久久久| 日韩国产在线不卡视频| 日韩av有码| 欧美91精品| 亚洲精品成人一区| 国产中文字幕一区二区三区| 麻豆视频在线看| 美女精品在线| 国产黄色一区| 亚洲激情久久| 欧美亚洲三区| 蜜桃传媒麻豆第一区在线观看 | 国产亚洲一区二区三区不卡| 久久香蕉国产| 亚洲精品看片| 亚洲风情在线资源| 久久99伊人| 国产成人精品一区二区三区免费 | 影音国产精品| 日产精品一区二区| 国产精品一区二区三区www| 视频一区中文字幕| 伊人久久亚洲影院| 1024精品一区二区三区| 日韩欧美精品一区| 精品一区二区三区在线观看视频 | 久久一区二区三区电影| 日本视频一区二区| 免费观看在线色综合| 婷婷中文字幕一区| 日韩欧美一区二区三区在线观看| 鲁大师成人一区二区三区| 日韩免费视频| 98精品视频| 欧美1区2区3| 国产精品一区二区精品| 日韩av二区在线播放| 一级欧美视频| 国产免费成人| 亚洲少妇诱惑| 在线一区视频| 六月天综合网| 免费人成在线不卡| 亚洲欧洲一区二区天堂久久| 国产精品字幕| 久久久久蜜桃| 久久人人99| 国产伊人精品| 天堂8中文在线最新版在线| 国产精品二区不卡| 午夜久久中文| 99久久99视频只有精品| 日韩精品第一区| а√天堂8资源中文在线| 97精品在线| 日韩欧美一区免费| 久久九九电影| 欧美特黄视频| 视频一区在线播放| 亚洲精选成人| 91成人小视频| 美女国产一区二区三区| av免费不卡国产观看| 激情综合激情| 视频一区二区三区在线| 日韩精品视频中文字幕| 国产精品videossex久久发布| 欧美/亚洲一区| 婷婷亚洲五月色综合| 国产精品美女久久久浪潮软件| 精品免费视频| 视频在线不卡免费观看| 最近高清中文在线字幕在线观看1| 亚洲精品在线二区| 亚洲精品少妇| 国产日韩三级| 欧美激情福利| 日本蜜桃在线观看视频| 亚洲手机视频| 亚洲精品无播放器在线播放| 欧美日韩一区二区三区不卡视频| 国精品一区二区三区| 亚洲天堂成人| 国产亚洲一级| 国产图片一区| 欧美成人a交片免费看| 免费精品国产的网站免费观看| 久久国产精品免费一区二区三区| 亚洲国产综合在线看不卡| 亚洲少妇诱惑| 国产精品一在线观看| 日韩国产激情| 日韩在线一区二区| 免费日韩成人| 欧美特黄一级大片| 婷婷综合国产| 久久电影tv| 在线亚洲自拍| 国产日韩高清一区二区三区在线| 久久国产精品亚洲77777| 石原莉奈在线亚洲三区| 国产精品一区高清| 精品欧美一区二区三区在线观看| 电影91久久久| 日本а中文在线天堂| 午夜一级久久| 久久久久久亚洲精品美女| 国产中文一区| 国产精品一区高清| 激情五月色综合国产精品| 97久久中文字幕| 99精品电影| 日本va欧美va精品发布| 91一区二区三区四区| 亚洲三级观看| caoporn视频在线| 日韩国产欧美视频| 亚洲成人一区在线观看| 综合激情视频| 免费在线小视频| 日韩国产一二三区| 今天的高清视频免费播放成人| 久久九九99| 日本91福利区| 高清av一区| 美女日韩在线中文字幕| 亚州精品视频| 欧洲精品一区二区三区| 欧美日韩亚洲一区三区| 999精品在线| 精品视频亚洲| 91嫩草精品| 黄色日韩在线|