Spring框架的基本作用

作為Spring框架斑举,它最主要的功能就是管理一堆使App(應用)發(fā)揮功能的類,這些作為整個App的基石助泽、主干的類啰扛,就叫做bean。

要管理bean嗡贺,也即是這堆發(fā)揮業(yè)務功能的類隐解,就不能直接把它們new出來,這樣缺乏統(tǒng)一的調度诫睬。所以煞茫,Spring使用.xml配置文件作為媒介,以IoC(Inversion of Control 控制反轉)作為工具摄凡,將這些bean拿給Spring container作統(tǒng)一管理续徽。

基于此,要把一個bean扔給container亲澡,至少需要兩部分:

  • bean對應的類的定義
  • 間接控制的.xml配置文件

之所以需要兩部分也是容易理解的钦扭,首先你得有一個bean自身的定義吧。再來床绪,你得告訴Spring container應該以什么樣的方式去接受這個bean客情,這個就是由.xml文件來說明。

例如会涎,我們要管理的bean叫做HelloWorld裹匙,那么它的這兩部分分別是:applicationContext-src.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.0.xsd">
    
    <bean id="helloWorld" class="com.terence.HelloWorld">        
        <property name="message" value="Hello Terence's World!" />
    </bean>  

</beans>

HelloWorld.java

public class HelloWorld {
    private String message;     
    
    public void setMessage(String message) {       
        this.message  = message;    
    }     
    
    public void getMessage() {       
        System.out.println("Your Message : " + message);    
    } 
}

有了這兩部分,Spring container就可以正確地接收名為HelloWorld的bean末秃。

現(xiàn)在概页,如果要使用這個bean,當然不可以直接去觸碰HelloWorld這個bean练慕,而是需要通過管理它的代理人Spring container來得到bean惰匙,進而用這個bean來為自己服務。

例如铃将,名為MainApp.java的這個類项鬼,現(xiàn)在需要使用HelloWorld這個bean的服務,我們就可以這樣做:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {    
    
    @SuppressWarnings("resource")
    public static void main(String[] args) {       
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-src.xml");      
        HelloWorld obj = (HelloWorld) context.getBean("helloWorld");        
        obj.getMessage();    
    }
}

這里有兩部分:

  • 首先根據(jù)配.xml置文件的位置去拿到Spring container劲阎,也即是這里的Context绘盟,可以把它理解為幾種Spring container中最著名的代言人。
  • 有了這個代言人后悯仙,自然就可以向這個代言人索取需要的bean HelloWorld龄毡,于是由context.getBean()方法去拿到需要的bean。

這樣得到bean后锡垄,就可以直接使用了沦零。

由此可見,Spring框架的出發(fā)點是直觀的货岭,它就是去充當一堆發(fā)揮功能的類(bean)的代理路操,將這些bean統(tǒng)一歸到自己的container作管理疾渴。任何其他需要使用到bean的類,都必須通過它這個代理人做索取屯仗。

一個值得探討的問題是搞坝,以上相當直觀易懂,但為什么在一般的Java Web開發(fā)中祭钉,沒怎么看到關于ApplicationContext的聲明瞄沙?

原因是,在通常的J2EE開發(fā)中慌核,Spring Context的聲明不是直接在用戶代碼中完成的距境,而是借由web.xml中配置的:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

這里借助了ContextLoaderListener就把ApplicationContext注冊進了我們的Web App。

另一個更重要的考慮是:

你的代碼中不應該出現(xiàn)對ApplicationContext的直接使用垮卓,而是同樣地使用配置文件垫桂、借助IoC去使用Context

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末粟按,一起剝皮案震驚了整個濱河市诬滩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灭将,老刑警劉巖疼鸟,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庙曙,居然都是意外死亡空镜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門捌朴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吴攒,“玉大人,你說我怎么就攤上這事砂蔽⊥菡” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵左驾,是天一觀的道長镣隶。 經常有香客問我,道長诡右,這世上最難降的妖魔是什么安岂? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮稻爬,結果婚禮上嗜闻,老公的妹妹穿的比我還像新娘蜕依。我一直安慰自己桅锄,他們只是感情好琉雳,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著友瘤,像睡著了一般翠肘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辫秧,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天束倍,我揣著相機與錄音,去河邊找鬼盟戏。 笑死绪妹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的柿究。 我是一名探鬼主播邮旷,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蝇摸!你這毒婦竟也來了婶肩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤貌夕,失蹤者是張志新(化名)和其女友劉穎律歼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啡专,經...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡险毁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了植旧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辱揭。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖病附,靈堂內的尸體忽然破棺而出问窃,到底是詐尸還是另有隱情,我是刑警寧澤完沪,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布域庇,位于F島的核電站,受9級特大地震影響覆积,放射性物質發(fā)生泄漏听皿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一宽档、第九天 我趴在偏房一處隱蔽的房頂上張望尉姨。 院中可真熱鬧,春花似錦吗冤、人聲如沸又厉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽覆致。三九已至侄旬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煌妈,已是汗流浹背儡羔。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留璧诵,地道東北人汰蜘。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像之宿,于是被迫代替她去往敵國和親鉴扫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359