亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

從零開始學spring-理解IOC

2019-11-14 11:54:41
字體:
來源:轉載
供稿:網友

對sPRing有所了解的都應該知道,spring貫穿始終的兩個重要的思想,一個是IOC(控制反轉),一個是DI(依賴注入),對于新手而言,這兩個概念比較難理解,我用自己的想法來解釋下

首先我們要知道在程序開發中為什么要使用spring框架。

這里先引入兩個概念:耦合性、侵入性。簡單的講:耦合性,在java中表現為類之間的關系,耦合性強說明類之間的依賴關系強;侵入性:框架對代碼的侵入,比如你項目用了struts1,要改框架時發現改的東西太多了,比如actionForm等,所以struts1對代碼的侵入性是很高的。在傳統的java開發中具有高度的耦合性和侵入型。一個項目中,一般一個類都要依賴很多其他的類來完成自己的操作,我們往往采用new這個類的對象來調用他的方法,這樣就造成了兩個類的依賴關系太強,改一個地方,往往牽扯很多類牽扯大量的代碼。侵入性上一段的例子可以明白。當然EJB也可以解決耦合性和侵入性的問題,但是ejb太依賴服務器,屬于重量級的框架。 可以說在這樣的背景下,spring應運而生,一個輕量級的框架,解決傳統企業開發的復雜性;使用普通的javaBean代替EJB技術。可以管理對象和對象之間的依賴關系,我們不需要自己建立對象,把這部分工作全部轉交給容器完成,具有低耦合,對代碼沒有侵略性,對服務器沒有依賴性特點的框架。而這個容器,即IOC.

如何理解IOC思想?

一個很流行的例子,我換了種說法,這樣更好理解:好比找女朋友,普通的方式是我們依賴各種關系找到這個女朋友(相當于new了對象),有一天分手了,而以前的那些關系也沒有了,要想找到新的女朋友就要依賴新的關系(重新 new另外一個對象),可以想象這個過程很麻煩。于是有了一種新的方式找對象——婚介所,這里就是我們所說的IOC方式,你把你要求的對象的特征告訴婚介所,他會直接給你找到一對象,沒有中間復雜的過程,你只管相處的事情就好了,new的過程不用管,不需要任何依賴關系,即使哪天要換了,再把需要的對象提交給婚介所就行了,你就會得到你想要的新的對象了。事實上,使用ioc方式創建對象的目的,是為了以“被動”的方式形成對象之間的依賴關系。傳統的開發過程中,不管是new,還是普通工廠,都需要目標對象主動創建、主動查找其需要的依賴對象 , 目標對象會將他的精力分散在不必要的非業務邏輯方面。IOC通過DI(依賴注入)把建立好的對象注入到目標對象中。

Spring IOC具體如何實現?

上文中的婚介所就是ioc管理對象的容器,實際上是一個xml文件,將對象配置在xml里面,通過spring的工廠類進行解析,以“反射”的方式創建對象。 spring IOC容器的關鍵點: * 必須將被管理的對象定義到spring配置文件中 * 必須定義構造函數或setter方法,讓spring將對象注入過來 我們可以通過下面這里例子理解spring ioc的實現。本例使用spring 3.2 1.配置applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">    <bean id="userDao4MySQLImpl" class="com.bjsxt.spring.dao.UserDao4MySqlImpl"/>    <bean id="userDao4OracleImpl" class="com.bjsxt.spring.dao.UserDao4OracleImpl"/>    <bean id="userManager" class="com.bjsxt.spring.manager.UserManagerImpl">        <!-- 構造方法注入         <constructor-arg ref="userDao4OracleImpl"/>         -->         <!-- setter方法注入 -->         <property name="userDao" ref="userDao4OracleImpl"/>    </bean></beans>2.注入的類:

package com.bjsxt.spring.dao;public interface UserDao {    public void save(String username, String passWord);}
package com.bjsxt.spring.dao;public class UserDao4MySqlImpl implements UserDao {    public void save(String username, String password) {        System.out.println("--------UserDao4MySqlImpl.save()-------");    }}
package com.bjsxt.spring.dao;public class UserDao4OracleImpl implements UserDao {    public void save(String username, String password) {        System.out.println("--------UserDao4OracleImpl.save()-------");    }}3.被注入的類:

package com.bjsxt.spring.manager;public interface UserManager {    public void save(String username, String password);}
package com.bjsxt.spring.manager;import com.bjsxt.spring.dao.UserDao;public class UserManagerImpl implements UserManager {    /**     * 兩種方式:如果這個類中需要注入對象,先建立對象屬性,     *      在寫構造方法或者settet方法。     *      */    private UserDao userDao;/*  public UserManagerImpl(UserDao userDao) {        this.userDao = userDao;    } */    public void save(String username, String password) {        this.userDao.save(username, password);    }    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }}4.測試類:

package com.bjsxt.spring.client;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bjsxt.spring.manager.UserManager;public class Client {    public static void main(String[] args) {/*  傳統的通過new對象建立類之間的關系 * UserManager userManager = new UserManagerImpl(new UserDao4OracleImpl());        UserManager userManager = new UserManagerImpl(new UserDao4MySqlImpl());        userManager.save("張三", "123");*//** * IOC思想     通過工廠類解析xml文件,以“反射”的方式創建對象: */        BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");        UserManager userManager = (UserManager)factory.getBean("userManager");        userManager.save("張三", "123");/** * IOC思想   實際的執行過程,這也是為什么需要setter方法或構造方法的原因:         *///      UserManagerImpl userManager = new UserManagerImpl();//      userManager.setUserDao(new UserDao4MySqlImpl());//      userManager.save("張三", "123");    }}這樣就實現了spring ioc思想。 本文完全個人理解,如有不對的地方,懇請指正。原文鏈接:http://blog.csdn.net/frightingforambition/article/details/47974775


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美激情另类校园| 久久久国产成人精品| 另类美女黄大片| 精品人伦一区二区三区蜜桃网站| 美乳少妇欧美精品| 日韩精品视频免费专区在线播放| 中文字幕国产精品久久| 欧美一级片在线播放| 国产日韩在线看片| 成人亚洲激情网| 日本三级久久久| 久久综合免费视频影院| 久久成人一区二区| 欧美日韩一区二区免费视频| 亚洲激情视频在线播放| 欧美国产精品日韩| 亚洲电影免费观看| 欧美色图在线视频| 精品国产乱码久久久久久天美| 国产一区二区三区在线观看视频| 在线午夜精品自拍| 中文字幕日本欧美| 亚洲欧美另类在线观看| 欧美交受高潮1| 91国产精品电影| 国产日韩在线看片| 国产亚洲欧美视频| 2019日本中文字幕| 欧美性受xxxx黑人猛交| 亚洲精品一区二区久| 久久男人的天堂| 精品国产欧美一区二区三区成人| 亚洲天堂成人在线视频| 亚洲人成电影网站色xx| 国产午夜精品理论片a级探花| 久久频这里精品99香蕉| 亚洲aa在线观看| 欧美刺激性大交免费视频| 欧美精品成人在线| 久久夜精品va视频免费观看| 日韩va亚洲va欧洲va国产| 亚洲激情中文字幕| 狠狠做深爱婷婷久久综合一区| 国产一区二区三区精品久久久| 日本成人免费在线| 国产成人亚洲综合青青| 国产精品青草久久久久福利99| 国产精品色婷婷视频| 欧美成人免费全部观看天天性色| 日韩精品视频观看| 97视频网站入口| 久久综合久久88| 精品久久久久久电影| 国产精品福利观看| 日韩在线视频中文字幕| 久久亚洲一区二区三区四区五区高| 欧美日韩国产在线看| 在线成人一区二区| 亚洲综合成人婷婷小说| 91tv亚洲精品香蕉国产一区7ujn| 欧美人与性动交a欧美精品| 98精品国产高清在线xxxx天堂| 国产不卡av在线免费观看| 欧美最猛性xxxxx免费| 91高潮精品免费porn| 国产精品久久77777| 国产原创欧美精品| 欧美一级淫片播放口| 国产精品一久久香蕉国产线看观看| 国产精品久久久久久久久久久新郎| 一区二区亚洲精品国产| 国产日韩精品视频| 中文字幕免费精品一区高清| 97视频在线观看播放| 精品国产欧美成人夜夜嗨| 精品女厕一区二区三区| 国产精品久久视频| 国产亚洲精品久久久优势| 亚洲人午夜色婷婷| 青青草精品毛片| 欧美极品少妇xxxxⅹ免费视频| 国产精品视频在线播放| 精品久久久久久久大神国产| 91亚洲精品久久久| 国产精品色午夜在线观看| 欧美精品xxx| 亚洲午夜av电影| 91高清视频免费观看| 色综合久久久久久中文网| 欧美精品www| 国内精久久久久久久久久人| 久久999免费视频| 中文字幕日韩精品有码视频| 色噜噜狠狠色综合网图区| 亚洲精品456在线播放狼人| 亚洲九九九在线观看| 国产精品久久久久免费a∨| 亚洲精品动漫久久久久| 国产黑人绿帽在线第一区| 亚洲自拍av在线| 69影院欧美专区视频| 亚洲最大的av网站| 欧美性感美女h网站在线观看免费| 亚洲精品aⅴ中文字幕乱码| 欧美国产日韩精品| 97在线精品视频| 国产精品视频地址| 尤物精品国产第一福利三区| 国产精品嫩草影院一区二区| 日本韩国在线不卡| 日韩在线www| 中文字幕视频一区二区在线有码| 亚洲丝袜av一区| 岛国av午夜精品| 亲爱的老师9免费观看全集电视剧| 在线日韩av观看| 国产午夜精品美女视频明星a级| 久久久国产精品免费| 欧美日韩不卡合集视频| 亚洲午夜未满十八勿入免费观看全集| 亚洲网址你懂得| 欧美成人午夜视频| 91精品国产乱码久久久久久久久| 亚洲国产中文字幕久久网| 国产在线精品自拍| 91精品久久久久久| 亚洲欧美一区二区三区在线| 日韩av大片在线| 午夜精品国产精品大乳美女| 日韩av在线网| 91色中文字幕| 亚洲成色www8888| 国产精品成人va在线观看| 人人澡人人澡人人看欧美| 高清在线视频日韩欧美| 久久久久成人精品| 欧美视频在线免费| 97香蕉超级碰碰久久免费软件| 欧美成人精品影院| 国产aⅴ夜夜欢一区二区三区| 欧美精品日韩www.p站| 91精品中国老女人| 中文字幕在线成人| 欧美日韩亚洲视频一区| 成人免费看片视频| 国产精品jvid在线观看蜜臀| 亚洲成人国产精品| 欧美高清视频一区二区| 91情侣偷在线精品国产| 国产精品自产拍在线观看中文| 久久久久久久久久av| 日韩在线观看av| 久久久久久亚洲| 97免费在线视频| 精品国偷自产在线视频99| 欧美日韩亚洲天堂| 热99精品里视频精品| 国产精品成人久久久久| 欧美大胆在线视频| 欧美老女人性生活| 成人信息集中地欧美| 亚洲电影免费观看高清| 日韩av在线免费观看一区| 国产精品国产自产拍高清av水多|