【Java框架型專案從入門到裝逼】第一節 - Spring框架 IOC
大家好,好久不見,今天我們來一起學習一下關於Spring框架的IOC技術。
控制反轉——Spring透過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個物件依賴的其它物件會透過被動的方式傳遞進來,而不是這個物件自己建立或者查詢依賴物件。你可以認為IoC與JNDI相反——不是物件從容器中查詢依賴,而是容器在物件初始化時不等物件請求就主動將依賴傳遞給它。
好吧,那我們從簡單的說起。直接講概念有點抽象,讓我們從一個實際的場景來分析這個事情。大毛想要找個女朋友,他的朋友二毛幫忙介紹了一個女生,叫翠花。然後大毛跟翠花認識了。相處了一段時間,因為翠花要大毛和他一起打王者榮耀,可是大毛只會打鬥地主,所以分手了,為此大毛難過了好長一段時間。後來,大毛又去找二毛幫忙,希望重新找一個女朋友。大家看這個過程,其實很麻煩的,大毛如果透過熟人介紹的方式來找女朋友,必然是一個一個的接觸,比如第一次他跟翠花相親,第二次跟桂花相親,第三次又跟西蘭花相親,每次都耗費大量的精力。
相親吃飯得花錢吧,看電影得花錢吧,萬一談不來,分手還麻煩。這就是大毛跟他每一個女朋友的依賴性太強了。
現在,請大家進行一個想象,想象我們自己是天神,以我們自己的意志來給大毛安排一個女朋友。既然我們是天神,就可以給大毛編寫一個人生的劇本。
之前大毛是透過二毛介紹,才認識了翠花,桂花,和西蘭花。現在,我們透過程式碼的形式來重現一個這個過程。
劇本:
大毛:
package com.spring.bean;
public class DaMao {
private GirlFriend girlFriend;
public GirlFriend getGirlFriend() {
return girlFriend;
}
public void setGirlFriend(GirlFriend girlFriend) {
this.girlFriend = girlFriend;
}
}
女朋友作為一個超類:
package com.spring.bean;
/**
* 女朋友
* @author Administrator
*/
public class GirlFriend {
private String hobby;
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
翠花繼承自GirlFriend :
package com.spring.bean;
public class CuiHua extends GirlFriend{
}
測試類:
package com.spring.test;
import com.spring.bean.CuiHua;
import com.spring.bean.DaMao;
import com.spring.bean.GirlFriend;
public class TestDaoMao {
public static void main(String[] args) {
DaMao daMao = new DaMao();
GirlFriend cuihua = new CuiHua();
cuihua.setHobby("王者榮耀");
daMao.setGirlFriend(cuihua);
//看一下大毛的女朋友喜歡做什麼?
System.out.println(daMao.getGirlFriend().getHobby());
}
}
看完了這個例子,我們發現,雖然我們是天神,可是安排這樣的劇本就要去不斷地去new新的GirlFriend,這樣是不是很麻煩?
實際我們天神的職責是掌管這個大毛的命運,在合適的時間,讓大毛去談一場戀愛就可以了,至於讓誰充當大毛的女朋友,作為天神,我們不關心,對不對?
或者說,反正是我們決定,無所謂是誰。
所以,我們只需要安心編寫大毛談戀愛的劇本就行了,我們只需要知道大毛有一個女朋友就OK了,到底是誰,以後再說。因為,我們是在大毛出生之前就給他安排了劇本。那是不是我們永遠都不給大毛指定一個女朋友呢?當然也不是,我們天神一般喜歡把那些可能會改變的東西寫在 “神聖的草稿紙” 上,這個草稿紙就是XML檔案。
接下來,讓我們引入Spring的整合環境,來模擬這個事情!
首先,引入Spring需要的jar包。
第二步,寫配置檔案。
然後,劇本就變成了這樣:
package com.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.bean.DaMao;
public class TestDaoMao2 {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("GirlFriends.xml");
DaMao daMao = (DaMao)context.getBean("DaMao");
//看一下大毛的女朋友喜歡做什麼?
System.out.println(daMao.getGirlFriend().getHobby());
}
}
執行效果:
這樣的好處顯而易見,我們不需要在劇本(Java程式碼)裡面指定誰是大毛的女朋友了,這些事情我們都寫在“神聖的草稿紙”上。牛逼了我的哥。IOC的原理就是在不改變劇本的情況下,由作為“天神”的你來指定誰來出演,體現在一個XML檔案上。而且這些配置都是可以更改的。劇本就是Java程式碼,能不改就不改。
作業:
新建一個Java專案SpringTest01 ,建立包 com.spring.bean。
需要建立的Java類:
Hero .java
屬性:
Private String heroName;
Priate String type;
Private String description;
生成對應的get、set方法,再跟據你的喜好重寫toString方法。
新建一個原始檔夾etc,專門用於存放配置檔案。編寫英雄池的xml檔案——heroPool.xml。
在配置中加入一個英雄的具體資訊:魯班七號、 射手、 嘻嘻,成功檢測到對面的智商,看來我無法發揮全部實力了。
建立包com.spring.test,新建測試類TestHero,讀取heroPool.xml,然後列印出魯班七號的具體資訊。
如果喜歡我的文章,還請點一波關注,謝謝老鐵!
原始碼連結: 密碼:om9i
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2808203/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Java框架型專案從入門到裝逼】第二節 - Spring框架 AOPJava框架Spring
- Celery框架從入門到精通框架
- Spring框架IOC容器Spring框架
- 01 . Go框架之Gin框架從入門到熟悉(路由和上傳檔案)Go框架路由
- Flask框架從入門到精通之Session(九)Flask框架Session
- Flask框架從入門到精通之Response(七)Flask框架
- Flask框架從入門到精通之Request(六)Flask框架
- Flask框架從入門到精通之初識(一)Flask框架
- Flask框架從入門到精通之路由(三)Flask框架路由
- Spring框架之IOC介紹Spring框架
- spring框架快速入門筆記Spring框架筆記
- Flask框架從入門到精通之模型關係(十七)Flask框架模型
- Flask框架從入門到精通之模板表單(二十)Flask框架
- Flask框架從入門到精通之引數配置(二)Flask框架
- Flask框架從入門到精通之模板初識(五)Flask框架
- Flask框架從入門到精通之轉換器(四)Flask框架
- 微前端框架 之 single-spa 從入門到精通前端框架
- 微前端框架 之 qiankun 從入門到原始碼分析前端框架原始碼
- Spring Boot從入門到實戰:整合Web專案常用功能Spring BootWeb
- Spring Boot從入門到精通(十一)整合Swagger框架,實現自動生成介面文件Spring BootSwagger框架
- Axon框架快速入門和DDD專案實踐框架
- Java必備乾貨:Spring框架之IOC的基本配置JavaSpring框架
- 深入學習Spring框架(一)- 入門Spring框架
- iOS 從零到一搭建元件化專案框架iOS元件化框架
- [SuperSocket2.0]SuperSocket 2.0從入門到懵逼
- Java持久層框架Mybatis入門Java框架MyBatis
- 微信小程式開發框架從入門到放棄微信小程式框架
- Flask框架從入門到精通之異常處理(十)Flask框架
- Flask框架從入門到精通之模型遷移操作(十六)Flask框架模型
- Flask框架從入門到精通之藍圖(二十四)Flask框架
- 手寫Spring ioc 框架,狠狠的“Spring 原始碼Spring框架原始碼
- Spring入門配置(一) - IOCSpring
- spring入門aop和iocSpring
- Spring框架入門Spring框架
- Flask框架從入門到精通之上下文(二十三)Flask框架
- Flask框架從入門到精通之擴充套件指令碼(十五)Flask框架套件指令碼
- Flask框架從入門到精通之模型資料庫配置(十一)Flask框架模型資料庫
- Angularjs 從入門到實戰(含專案教程)AngularJS