Spring通過IOC幫我們做火雞
前言
什麼是IOC,IOC是控制反轉,打個比方,本來你自己new一隻火雞,現在讓控制權交給spring,它使用依賴注入的技術做給你吃。
一、IOC——setter注入
1、準備dmo
首先準備一隻火雞
public class Turkey { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
然後準備一個廚房, 屬性包含火雞
public class Cookhouse { private int id; private String name; private Turkey turkey; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Turkey getTurkey() { return turkey; } public void setTurkey(Turkey turkey) { this.turkey = turkey; } @Override public String toString() { return "Cookhouse{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
2、applicationContext.xml配置
給bean起個名字,class就是dmo類,property name是屬性名,value和ref是屬性值,如果屬性是物件要使用"ref="
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean name="t" class="Turkey"> <property name="name" value="usaTurkey"/> </bean> <bean name="c" class="Cookhouse"> <property name="name" value="cnCookhouse"/> <property name="turkey" ref="t"/> </bean> </beans>
3、新增spring的相關JAR包
JAR包以及其它知識詳見網上一個大神的專案:自學網站
4、spring幫我們在廚房做火雞
讓spring幫我在廚房做火雞吃,spring根據核心配置檔案applicationContext.xml建立了一箇中國廚房,然後做了只美國火雞。
public class TestSpring {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
Cookhouse c = (Cookhouse)applicationContext.getBean("c");
System.out.println(c.getName()+"做了只"+c.getTurkey().getName());
}
}
執行結果:
二、IOC——註解注入
有小夥伴說:火雞做太慢,等餓了
spring說:那我來用註解注入的方式給你做火雞
1、@Autowired對屬性的註解
首先優化物件的注入方式,applicationContext.xml新增<context:annotation-config/>
,表示告訴Spring要用註解的方式進行注入,<property name="turkey" ref="t"/>
就可以註釋掉了,我們只需要在Cookhouse類的屬性Turkey上面加上@Autowired就可以注入火雞了
@Autowired
private Turkey turkey;
2、@Component對Bean的註解
然後優化Bean的注入方式,applicationContext.xml的Bean注入看上去還是比較繁瑣,我們再簡化下,只新增:
<context:component-scan base-package="com.fantasy.dmo"/>
其作用是告訴Spring,bean都放在這個包下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--bean都放在這個包下-->
<context:component-scan base-package="com.fantasy.dmo"/>
</beans>
因為Bean移到dmo了,所以在dmo分別給Cookhouse和Turkey加上註解@Component,然後給它們的屬性name命名。
@Component("c")
public class Cookhouse {
private int id;
private String name="cnCookhouse";
@Autowired
private Turkey turkey;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Turkey getTurkey() {
return turkey;
}
public void setTurkey(Turkey turkey) {
this.turkey = turkey;
}
@Override
public String toString() {
return "com.fantasy.dmo.Cookhouse{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
@Component("t")
public class Turkey {
private int id;
private String name="usaTurkey";
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
執行程式發現結果一樣,又省去很多配置,香噴噴的火雞做的更快了呢~
相關推薦
Spring通過IOC幫我們做火雞
前言 什麼是IOC,IOC是控制反轉,打個比方,本來你自己new一隻火雞,現在讓控制權交給spring,它使用依賴注入的技術做給你吃。 一、IOC——setter注入 1、準備dmo 首先準備一隻火雞 public class Turkey { private int id; private
spring-mvc幫我們做了哪些事
hibernate使用起來,也不太方便;hibernate想要返回的結果是物件,需要將使用到的每一個類的路徑寫到hibernate配置下,而spring只需要在配置檔案中寫下掃描包的路徑;往底層說,hibernate偷懶了,其實只需要遍歷下某個路徑下的所有檔案,便能拿到類名; 使用sessionFactor
[Python小記] 通俗的理解閉包 閉包能幫我們做什麼?
熱身: 首先給出閉包函式的必要條件: 閉包函式必須返回一個函式物件 閉包函式返回的那個函式必須引用外部變數(一般不能是全域性變數),而返回的那個函式內部不一定要return 幾個典型的閉包例子: # ENV>>> Python
Koa幫我們做了什麼
整理web渲染思路,與KOA作比較 1.開啟伺服器並監聽埠,註冊監聽事件 // 原生 let http = require('http') const server = http.createServer((req, res) => { // res.setH
ARC到底幫我們做了哪些工作?
關於ARC 從iOS5開始, 就支援自動引用計數(Automatic Reference Counting, ARC)了, 所以就變得更為簡單了。ARC幾乎把所有記憶體管理事宜都交由編譯器來決定, 開發者只需專注於業務邏輯。 關於ARC的一些看法 1.
maven能幫我們做什麼
1.首先我們明確maven什麼? Maven是基於專案物件模型(POM),可以通過一小段描述資訊來管理專案的構建,報告和文件的軟體專案管理工具。以上來自百度百科。我們讀著比較繞口,也很難理解真正的含義。我們現在從理解的角度看待這個問題(也就是碰到問題,解決問題
[Python小記] 通俗的理解閉包 閉包能幫我們做什麼?
熱身: 首先給出閉包函式的必要條件: 閉包函式必須返回一個函式物件 閉包函式返回的那個函式必須引用外部變數(一般不能是全域性變數),而返回的那個函式內部不一定要return 幾個典型的閉包例子: # ENV>>> Python 3.6 #
spring框架在開發中為我們做了哪些事?
開發中利用spring可以減輕程式設計師工作負擔,提高程式碼的複用率,降低程式的耦合性,簡化程式碼易於程式的擴充套件和維護。那麼spring是如何實現這些功能的呢,spring在開發中為我們做了哪些事呢? 1、spring實現了ioc 即控制反轉,將物件的建立的控制權由程式
Spring通過註解管理控制反轉(IOC)和注入(DI)
spring中的註解用法 1.註解的依賴注入di 在spring的xml中用 <property name="" ref=""> <!-- setter方式注入--> <constructor index="" ref=""/&
Spring之IOC篇章具體解釋
什麽 alt cti 反轉 獲得 ring 這樣的 圖片 多態 專題一 IOC 1.接口以及面向接口編程 a.結構設計中,分清層次以及調用關系,每層僅僅向外(或者上層)提供一組功能接口,各層間僅依賴接口而非實現類這樣做的優點是,接口實現的變動不影響各層
從明天起,讓我們做一名調包俠
center alt 基礎設施 深入 程序包 images 反饋 learning 這樣的 原文首發於我的微信公眾號:GeekArtT。 從明天起,做一個幸福的人,餵馬、劈柴,周遊世界,然後做一名合格的調包俠。不再基礎設施上糾結不已,而是在前人的基礎上,進行地春暖花開
為什麽要通過百科類產品做網站營銷優化推廣工作
今天是2017年6月10日,細心的站長應該早已悉知,百度從本月1日起正式開始落實實名制。現在你去看一眼百度知道首頁的右上角,有一個十分顯眼的HOT,時刻提醒著用戶實名制來啦!這表明了百度加強用戶管理的決心,也增加了通過百度產品做網站營銷優化推廣工作的難度。不過,我們億豐網絡倒是認為本次調整是一次好事,因
Spring之IOC/DI(反轉控制/依賴註入)_入門Demo
pro 開發 string類 業務邏輯 測試類 控制 control odin 以及 軟件152 劉安民 在平時的java應用開發中,我們要實現某一個功能或者說是完成某個業務邏輯時至少需要兩個或以上的對象來協作完成,在沒有使用Spring的時候,每個對象在需要使用他的合作對
我們做不到一刀劈死它,但能夠先切斷它的一根腳趾頭
基於web 設計 方式 做人 能夠 類別 logo -m data- 最先取名“殺死Excel”,後來認為做人應該低調。就取名“面對Excel和Google docs,我們照樣創新”。 Chrome顛覆IE。 iPhone顛覆微軟Windows Mobile
【spring源碼學習】spring的IOC容器之BeanFactoryPostProcessor接口學習
時機 process roc sta 自動 註解 lis nbsp factor 【一】org.springframework.beans.factory.config.BeanFactoryPostProcessor接口==>該接口實現方法的執行時機:該接口void
《Java從入門到放棄》入門篇:spring中IOC的註入姿勢
java ioc spring IOC到底是個什麽東東呢?控制反轉(Inversion of Control,英文縮寫為IoC),其實就是這個東東。你隨便百度一下就會得到比較書面的解釋:通過引入實現了IoC模式的IoC容器,即可由IoC容器來管理對象的生命周期、依賴關系等,從而使得應用程序的配置和
Spring 實踐 -IoC
有一個 cloud getprop 處理器 prop npos 屬性註入 www ioc容器 Spring 實踐
對Spring的IoC和DI最生動的解釋
控制 就會 卡洛斯 lec spring nec 復制 文章 朋友 這篇文章是我從別人那裏復制的,因為我怕以後會看不到了,太生動了 首先想說說IoC(Inversion of Control,控制倒轉)。這是spring的核心,貫穿始終。所謂IoC,對於spring
Spring框架—— IOC容器和Bean的配置
單引號 framework 將不 配置信息 init 字符串連接 生命 release exp 1 IOC和DI ①IOC(Inversion of Control):反轉控制。 在應用程序中的組件需要獲取資源時,傳統的方式是組件主動的從容器中獲取所需要的資源,在這樣的模
Spring框架IOC,DI概念理解
ram 方式 ins 商品 www auto 默認 use 當我 1.什麽是框架? 框架是一種重復使用的解決方案,針對某個軟件開發的問題提出的。 Spring框架,它是一個大型的包含很多重復使用的某個領域的解決方案。 Spring的理念:不要重復發明輪子。 2.S