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

Spring的IOC代碼解析

 更新時(shí)間:2017年12月25日 10:43:48   作者:人圭先生  
這篇文章主要介紹了Spring的IOC代碼解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。

IOC通常就是我們所說的控制反轉(zhuǎn),它也是屬于java中的重點(diǎn),在面試的時(shí)候常常會(huì)被問到。

控制反轉(zhuǎn)(Inversion of Control,英文縮寫為IoC)把創(chuàng)建對(duì)象的權(quán)利交給框架,是框架的重要特征,并非面向?qū)ο缶幊痰膶S眯g(shù)語。它包括依賴注入(Dependency Injection,簡稱DI)和依賴查找(Dependency Lookup)。

IOC使得程序獲取對(duì)象的方式發(fā)生了改變,由開始的new一個(gè)對(duì)象轉(zhuǎn)變?yōu)榈谌娇蚣艿膭?chuàng)建和注入。第三方框架一般是通過配置指定具體注入哪一個(gè)實(shí)現(xiàn),從而降低源代碼的耦合性。

ioc最大的好處是什么?

因?yàn)榘褜?duì)象生成放在了XML里定義,所以當(dāng)我們需要換一個(gè)實(shí)現(xiàn)子類將會(huì)變成很簡單(一般這樣的對(duì)象都是現(xiàn)實(shí)于某種接口的),只要修改XML就可以了,這樣我們甚至可以實(shí)現(xiàn)對(duì)象的熱插撥(有點(diǎn)象USB接口和SCIS硬盤了)。

IOC依據(jù)實(shí)現(xiàn)的方式不同可分為依賴注入(DI)和依賴查找

DI是控制反轉(zhuǎn)的主要技術(shù)途徑,分為setter注入和構(gòu)造器注入

setter注入

通過調(diào)用無參構(gòu)造器或者static無參工廠方法實(shí)例化bean之后,調(diào)用bean的setter方法實(shí)現(xiàn)setter注入。

public class JDBCDataSource(){
	private String driver;
	public void setDriver(String driver){
		Class.forName(driver);
		this.driver=driver;
	}
}
.........
 ........

下來實(shí)現(xiàn)setter注入配置xml文件

<bean id="dataSource" class="org.csdn.JDBCDataSource">
 <property name="driver" value="oracle.jdbc.OracleDriver"/>
 <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
 <property name="user" value="andreny"/>
 <property name="password" value="root"/>
 </bean>

構(gòu)造器注入

這個(gè)是通過調(diào)用帶參數(shù)的構(gòu)造器來實(shí)現(xiàn)的,容器在bean被實(shí)例化的時(shí)候,會(huì)根據(jù)參數(shù)類型執(zhí)行相應(yīng)的構(gòu)造器。

public class OracleUserDao implements UserDao{
	private JDBCDataSource dataSource;
	public OracleUserDao(JDBCDataSource dataSource){
		this.dataSource=dataSource;
	}
}
........
........

按構(gòu)造參數(shù)索引指定注入

<bean id="dataSource" class="org.csdn.JDBCDataSource">
 <proerty name="driver" value="oracle.jdbc.OracleDriver"/>
 <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
 <property name="user" value="andreny"/>
 <property name="password" value="root"/>
</bean>
<bean id="userDao" class="org.csdn.OracleUserDao">
 <construtor-argindex="0" ref="dataSource"/>
</bean>

總結(jié)

以上就是本文關(guān)于Spring的IOC代碼解析的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

spring的IoC和DI詳解

Spring的Ioc模擬實(shí)現(xiàn)詳細(xì)介紹

如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    這篇文章主要為大家詳細(xì)介紹了win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java基于Socket的文件傳輸實(shí)現(xiàn)方法

    Java基于Socket的文件傳輸實(shí)現(xiàn)方法

    這篇文章主要介紹了Java基于Socket的文件傳輸實(shí)現(xiàn)方法,結(jié)合實(shí)例分析了Java使用Socket實(shí)現(xiàn)文件傳輸?shù)慕⑦B接、發(fā)送與接收消息、文件傳輸?shù)认嚓P(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 在MyBatis中實(shí)現(xiàn)一對(duì)多查詢和多對(duì)一查詢的方式詳解(各兩種方式)

    在MyBatis中實(shí)現(xiàn)一對(duì)多查詢和多對(duì)一查詢的方式詳解(各兩種方式)

    今天通過兩種方法分別給大家介紹在MyBatis中實(shí)現(xiàn)一對(duì)多查詢和多對(duì)一查詢的方式,每種方式通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-01-01
  • java.util.concurrent.ExecutionException 問題解決方法

    java.util.concurrent.ExecutionException 問題解決方法

    這篇文章主要介紹了java.util.concurrent.ExecutionException 問題解決方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 一天時(shí)間用Java寫了個(gè)飛機(jī)大戰(zhàn)游戲,朋友直呼高手

    一天時(shí)間用Java寫了個(gè)飛機(jī)大戰(zhàn)游戲,朋友直呼高手

    前兩天我發(fā)現(xiàn)論壇有兩篇飛機(jī)大戰(zhàn)的文章異?;鸨?但都是python寫的,竟然不是我大Java,說實(shí)話作為老java選手,我心里是有那么一些失落的,今天特地整理了這篇文章,需要的朋友可以參考下
    2021-05-05
  • Java 求解如何把二叉搜索樹轉(zhuǎn)換為累加樹

    Java 求解如何把二叉搜索樹轉(zhuǎn)換為累加樹

    這篇文章主要介紹了Java 求解把二叉搜索樹轉(zhuǎn)換為累加樹的代碼,總之需要觀察示例節(jié)點(diǎn)的規(guī)律,需要記錄上個(gè)節(jié)點(diǎn)的情況,注意引入前驅(qū)節(jié)點(diǎn)pre,具體實(shí)例代碼跟隨小編一起看看吧
    2021-11-11
  • java 反射機(jī)制

    java 反射機(jī)制

    本文主要介紹了java反射機(jī)制的相關(guān)知識(shí),具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Curator實(shí)現(xiàn)zookeeper的節(jié)點(diǎn)監(jiān)聽詳解

    Curator實(shí)現(xiàn)zookeeper的節(jié)點(diǎn)監(jiān)聽詳解

    這篇文章主要介紹了Curator實(shí)現(xiàn)zookeeper的節(jié)點(diǎn)監(jiān)聽詳解,Curtor框架中一共有三個(gè)實(shí)現(xiàn)監(jiān)聽的方式,一種是NodeCache監(jiān)聽指定節(jié)點(diǎn),一種是pathChildrenCache監(jiān)聽子節(jié)點(diǎn),一種是TreeCache可以監(jiān)控所有節(jié)點(diǎn) 相當(dāng)于以上兩種的合集,需要的朋友可以參考下
    2023-12-12
  • SpringBoot整合MP通過Redis實(shí)現(xiàn)二級(jí)緩存方式

    SpringBoot整合MP通過Redis實(shí)現(xiàn)二級(jí)緩存方式

    這篇文章主要介紹了SpringBoot整合MP通過Redis實(shí)現(xiàn)二級(jí)緩存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java中jstat命令的使用詳解

    Java中jstat命令的使用詳解

    jstat命令可以查看堆內(nèi)存各部分的使用量,以及加載類的數(shù)量,下面這篇文章主要給大家介紹了關(guān)于Java中jstat命令使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03

最新評(píng)論

新丰县| 江永县| 玉田县| 临澧县| 阿合奇县| 炉霍县| 金沙县| 当涂县| 潜江市| 左贡县| 麻江县| 太白县| 苏尼特左旗| 肥乡县| 水富县| 庆城县| 洛扎县| 吉水县| 苍南县| 马边| 洛宁县| 仁化县| 怀来县| 景宁| 天水市| 焉耆| 南丹县| 从化市| 瑞昌市| 密云县| 阿克苏市| 枞阳县| 永州市| 法库县| 九龙城区| 侯马市| 济南市| 白玉县| 泾源县| 沾化县| 通州区|