1.Spring 概述
概述
Spring 是最受歡迎的企業(yè)級(jí) Java 應(yīng)用程序開發(fā)框架,數(shù)以百萬的來自世界各地的開發(fā)人員使用 Spring 框架來創(chuàng)建性能好抗俄、易于測試梁棠、可重用的代碼靠闭。
Spring 框架是一個(gè)開源的 Java 平臺(tái),它最初是由 Rod Johnson 編寫的塞琼,并且于 2003 年 6 月首次在 Apache 2.0 許可下發(fā)布顷链。
Spring 是輕量級(jí)的框架,其基礎(chǔ)版本只有 2 MB 左右的大小屈梁。
Spring 框架的核心特性是可以用于開發(fā)任何 Java 應(yīng)用程序,但是在 Java EE 平臺(tái)上構(gòu)建 web 應(yīng)用程序是需要擴(kuò)展的榛了。 Spring 框架的目標(biāo)是使 J2EE 開發(fā)變得更容易使用在讶,通過啟用基于 POJO 編程模型來促進(jìn)良好的編程實(shí)踐。
使用 Spring 框架的好處
下面列出的是使用 Spring 框架主要的好處:
Spring 可以使開發(fā)人員使用 POJOs 開發(fā)企業(yè)級(jí)的應(yīng)用程序霜大。只使用 POJOs 的好處是你不需要一個(gè) EJB 容器產(chǎn)品构哺,比如一個(gè)應(yīng)用程序服務(wù)器,但是你可以選擇使用一個(gè)健壯的 servlet 容器,比如 Tomcat 或者一些商業(yè)產(chǎn)品曙强。
Spring 在一個(gè)單元模式中是有組織的残拐。即使包和類的數(shù)量非常大,你只要擔(dān)心你需要的碟嘴,而其它的就可以忽略了溪食。
Spring 不會(huì)讓你白費(fèi)力氣做重復(fù)工作,它真正的利用了一些現(xiàn)有的技術(shù)娜扇,像ORM 框架错沃、日志框架、JEE雀瓢、Quartz 和 JDK 計(jì)時(shí)器枢析,其他視圖技術(shù)。
測試一個(gè)用 Spring 編寫的應(yīng)用程序很容易刃麸,因?yàn)榄h(huán)境相關(guān)的代碼被移動(dòng)到這個(gè)框架中醒叁。此外,通過使用 JavaBean-style POJOs泊业,它在使用依賴注入注入測試數(shù)據(jù)時(shí)變得更容易把沼。
Spring 的 web 框架是一個(gè)設(shè)計(jì)良好的 web MVC 框架,它為比如 Structs 或者其他工程上的或者不怎么受歡迎的 web 框架提供了一個(gè)很好的供替代的選擇脱吱。MVC模式導(dǎo)致應(yīng)用程序的不同方面(輸入邏輯智政,業(yè)務(wù)邏輯和UI邏輯)分離,同時(shí)提供這些元素之間的松散耦合箱蝠。
模型(Model)封裝了應(yīng)用程序數(shù)據(jù)续捂,通常它們將由POJO類組成。
視圖(View)負(fù)責(zé)渲染模型數(shù)據(jù)宦搬,一般來說它生成客戶端瀏覽器可以解釋HTML輸出牙瓢。
控制器(Controller)負(fù)責(zé)處理用戶請求并構(gòu)建適當(dāng)?shù)哪P停⑵鋫鬟f給視圖進(jìn)行渲染间校。
Spring 對(duì)JavaEE開發(fā)中非常難用的一些API(JDBC矾克、JavaMail、遠(yuǎn)程調(diào)用等)憔足,都提供了封裝胁附,使這些API應(yīng)用難度大大降低。
輕量級(jí)的 IOC 容器往往是輕量級(jí)的滓彰,例如控妻,特別是當(dāng)與 EJB 容器相比的時(shí)候。這有利于在內(nèi)存和 CPU 資源有限的計(jì)算機(jī)上開發(fā)和部署應(yīng)用程序揭绑。
Spring提供了一致的事務(wù)管理接口弓候,可向下擴(kuò)展到(使用一個(gè)單一的數(shù)據(jù)庫郎哭,例如)本地事務(wù)并擴(kuò)展到全局事務(wù)(例如,使用 JTA)菇存。
依賴注入(DI)
Spring 最認(rèn)同的技術(shù)是控制反轉(zhuǎn)的依賴注入(DI)模式∫琅福控制反轉(zhuǎn)(IoC)是一個(gè)通用的概念亥至,它可以用許多不同的方式去表達(dá),依賴注入僅僅是控制反轉(zhuǎn)的一個(gè)具體的例子睡榆。
當(dāng)編寫一個(gè)復(fù)雜的 Java 應(yīng)用程序時(shí),應(yīng)用程序類應(yīng)該盡可能的獨(dú)立于其他的 Java 類來增加這些類可重用可能性葡兑,當(dāng)進(jìn)行單元測試時(shí),可以使它們獨(dú)立于其他類進(jìn)行測試洲守。依賴注入(或者有時(shí)被稱為配線)有助于將這些類粘合在一起股缸,并且在同一時(shí)間讓它們保持獨(dú)立衡楞。
到底什么是依賴注入?讓我們將這兩個(gè)詞分開來看一看敦姻。這里將依賴關(guān)系部分轉(zhuǎn)化為兩個(gè)類之間的關(guān)聯(lián)瘾境。例如,類 A 依賴于類 B×耄現(xiàn)在迷守,讓我們看一看第二部分,注入旺入。所有這一切都意味著類 B 將通過 IoC 被注入到類 A 中兑凿。
依賴注入可以以向構(gòu)造函數(shù)傳遞參數(shù)的方式發(fā)生,或者通過使用 setter 方法 post-construction茵瘾。由于依賴注入是 Spring 框架的核心部分礼华,所以我將在一個(gè)單獨(dú)的章節(jié)中利用很好的例子去解釋這一概念。
面向方面的程序設(shè)計(jì)(AOP):
Spring 框架的一個(gè)關(guān)鍵組件是面向方面的程序設(shè)計(jì)(AOP)框架拗秘。一個(gè)程序中跨越多個(gè)點(diǎn)的功能被稱為橫切關(guān)注點(diǎn)圣絮,這些橫切關(guān)注點(diǎn)在概念上獨(dú)立于應(yīng)用程序的業(yè)務(wù)邏輯。有各種各樣常見的很好的關(guān)于方面的例子雕旨,比如日志記錄扮匠、聲明性事務(wù)、安全性奸腺,和緩存等等餐禁。
在 OOP 中模塊化的關(guān)鍵單元是類,而在 AOP 中模塊化的關(guān)鍵單元是方面突照。AOP 幫助你將橫切關(guān)注點(diǎn)從它們所影響的對(duì)象中分離出來帮非,然而依賴注入幫助你將你的應(yīng)用程序?qū)ο髲谋舜酥蟹蛛x出來。
Spring 框架的 AOP 模塊提供了面向方面的程序設(shè)計(jì)實(shí)現(xiàn)讹蘑,可以定義諸如方法攔截器和切入點(diǎn)等末盔,從而使實(shí)現(xiàn)功能的代碼徹底的解耦出來。使用源碼級(jí)的元數(shù)據(jù)座慰,可以用類似于.Net屬性的方式合并行為信息到代碼中陨舱。我將在一個(gè)獨(dú)立的章節(jié)中討論更多關(guān)于?Spring AOP?的概念。
2.Spring 體系結(jié)構(gòu)
體系結(jié)構(gòu)
Spring 有可能成為所有企業(yè)應(yīng)用程序的一站式服務(wù)點(diǎn)版仔,然而游盲,Spring 是模塊化的误墓,允許你挑選和選擇適用于你的模塊,不必要把剩余部分也引入益缎。下面的部分對(duì)在 Spring 框架中所有可用的模塊給出了詳細(xì)的介紹谜慌。
Spring 框架提供約 20 個(gè)模塊,可以根據(jù)應(yīng)用程序的要求來使用莺奔。
核心容器
核心容器由spring-core欣范,spring-beans,spring-context令哟,spring-context-support和spring-expression(SpEL恼琼,Spring表達(dá)式語言,Spring Expression Language)等模塊組成屏富,它們的細(xì)節(jié)如下:
spring-core模塊提供了框架的基本組成部分晴竞,包括 IoC 和依賴注入功能。
spring-beans模塊提供 BeanFactory役听,工廠模式的微妙實(shí)現(xiàn)颓鲜,它移除了編碼式單例的需要,并且可以把配置和依賴從實(shí)際編碼邏輯中解耦典予。
context模塊建立在由core和beans模塊的基礎(chǔ)上建立起來的甜滨,它以一種類似于JNDI注冊的方式訪問對(duì)象。Context模塊繼承自Bean模塊瘤袖,并且添加了國際化(比如衣摩,使用資源束)、事件傳播捂敌、資源加載和透明地創(chuàng)建上下文(比如艾扮,通過Servelet容器)等功能。Context模塊也支持Java EE的功能占婉,比如EJB泡嘴、JMX和遠(yuǎn)程調(diào)用等。ApplicationContext接口是Context模塊的焦點(diǎn)逆济。spring-context-support提供了對(duì)第三方庫集成到Spring上下文的支持酌予,比如緩存(EhCache, Guava, JCache)、郵件(JavaMail)奖慌、調(diào)度(CommonJ, Quartz)抛虫、模板引擎(FreeMarker, JasperReports, Velocity)等。
spring-expression模塊提供了強(qiáng)大的表達(dá)式語言简僧,用于在運(yùn)行時(shí)查詢和操作對(duì)象圖建椰。它是JSP2.1規(guī)范中定義的統(tǒng)一表達(dá)式語言的擴(kuò)展,支持set和get屬性值岛马、屬性賦值棉姐、方法調(diào)用屠列、訪問數(shù)組集合及索引的內(nèi)容、邏輯算術(shù)運(yùn)算伞矩、命名變量脸哀、通過名字從Spring IoC容器檢索對(duì)象,還支持列表的投影扭吁、選擇以及聚合等。
它們的完整依賴關(guān)系如下圖所示:
數(shù)據(jù)訪問/集成
數(shù)據(jù)訪問/集成層包括 JDBC盲镶,ORM侥袜,OXM,JMS 和事務(wù)處理模塊溉贿,它們的細(xì)節(jié)如下:
(注:JDBC=Java Data Base Connectivity枫吧,ORM=Object Relational Mapping,OXM=Object XML Mapping宇色,JMS=Java Message Service)
JDBC?模塊提供了JDBC抽象層九杂,它消除了冗長的JDBC編碼和對(duì)數(shù)據(jù)庫供應(yīng)商特定錯(cuò)誤代碼的解析。
ORM?模塊提供了對(duì)流行的對(duì)象關(guān)系映射API的集成宣蠕,包括JPA例隆、JDO和Hibernate等。通過此模塊可以讓這些ORM框架和spring的其它功能整合抢蚀,比如前面提及的事務(wù)管理镀层。
OXM?模塊提供了對(duì)OXM實(shí)現(xiàn)的支持,比如JAXB皿曲、Castor唱逢、XML?Beans、JiBX屋休、XStream等坞古。
JMS?模塊包含生產(chǎn)(produce)和消費(fèi)(consume)消息的功能。從Spring?4.1開始劫樟,集成了spring-messaging模塊痪枫。。
事務(wù)模塊為實(shí)現(xiàn)特殊接口類及所有的 POJO 支持編程式和聲明式事務(wù)管理毅哗。(注:編程式事務(wù)需要自己寫beginTransaction()听怕、commit()、rollback()等事務(wù)管理方法虑绵,聲明式事務(wù)是通過注解或配置由spring自動(dòng)處理尿瞭,編程式事務(wù)粒度更細(xì))
Web
Web 層由 Web,Web-MVC翅睛,Web-Socket 和 Web-Portlet 組成声搁,它們的細(xì)節(jié)如下:
Web?模塊提供面向web的基本功能和面向web的應(yīng)用上下文黑竞,比如多部分(multipart)文件上傳功能、使用Servlet監(jiān)聽器初始化IoC容器等疏旨。它還包括HTTP客戶端以及Spring遠(yuǎn)程調(diào)用中與web相關(guān)的部分很魂。。
Web-MVC?模塊為web應(yīng)用提供了模型視圖控制(MVC)和REST?Web服務(wù)的實(shí)現(xiàn)檐涝。Spring的MVC框架可以使領(lǐng)域模型代碼和web表單完全地分離遏匆,且可以與Spring框架的其它所有功能進(jìn)行集成。
Web-Socket?模塊為 WebSocket-based 提供了支持谁榜,而且在 web 應(yīng)用程序中提供了客戶端和服務(wù)器端之間通信的兩種方式幅聘。
Web-Portlet?模塊提供了用于Portlet環(huán)境的MVC實(shí)現(xiàn),并反映了spring-webmvc模塊的功能窃植。
其他
還有其他一些重要的模塊帝蒿,像?AOP,Aspects巷怜,Instrumentation葛超,Web 和測試模塊,它們的細(xì)節(jié)如下:
AOP?模塊提供了面向方面的編程實(shí)現(xiàn)延塑,允許你定義方法攔截器和切入點(diǎn)對(duì)代碼進(jìn)行干凈地解耦绣张,從而使實(shí)現(xiàn)功能的代碼徹底的解耦出來。使用源碼級(jí)的元數(shù)據(jù)关带,可以用類似于.Net屬性的方式合并行為信息到代碼中胖替。
Aspects?模塊提供了與?AspectJ?的集成,這是一個(gè)功能強(qiáng)大且成熟的面向切面編程(AOP)框架豫缨。
Instrumentation?模塊在一定的應(yīng)用服務(wù)器中提供了類 instrumentation 的支持和類加載器的實(shí)現(xiàn)独令。
Messaging?模塊為 STOMP 提供了支持作為在應(yīng)用程序中 WebSocket 子協(xié)議的使用。它也支持一個(gè)注解編程模型好芭,它是為了選路和處理來自 WebSocket 客戶端的 STOMP 信息燃箭。
測試模塊支持對(duì)具有 JUnit 或 TestNG 框架的 Spring 組件的測試。
3.Spring 環(huán)境配置
環(huán)境設(shè)置
本教程將指導(dǎo)你如何準(zhǔn)備開發(fā)環(huán)境來使用 Spring 框架開始你的工作舍败。本教程還將教你在安裝 Spring 框架之前如何在你的機(jī)器上安裝 JDK招狸,Tomcat 和 Eclipse。
第 1 步:安裝 Java 開發(fā)工具包(JDK)
你可以從 Oracle 的 Java 網(wǎng)站?Java SE Downloads?下載 JDK 的最新版本邻薯。你會(huì)在下載的文件中找到教你如何安裝 JDK 的說明裙戏,按照給出的說明安裝和配置 JDK 的設(shè)置。最后厕诡,設(shè)置 PATH 和 JAVAHOME 環(huán)境變量累榜,引入包含 java 和 javac 的目錄,通常分別為 java?install?dir/bin 和 java?install _ dir。
如果你運(yùn)行的是Windows壹罚,并在C:\jdk1.6.0_15上安裝了JDK葛作,你就可以把下面這行寫入C:\autoexec.bat文件中。
set PATH=C:\jdk1.6.0_15\bin;%PATH%
set JAVA_HOME=C:\jdk1.6.0_15
或者猖凛,在 Windows XP/7/8 中,你也可以右鍵單擊“我的電腦”辨泳,選擇“屬性”虱岂,然后是“高級(jí)”,然后是“環(huán)境變量”菠红。接下來量瓜,你將更新 PATH 值,并且按下 OK 按鈕途乃。
在 Unix(Solaris、Linux 等等)上扔傅,如果在 /usr/local/jdk1.6.0_15 上安裝 SDK耍共,并且使用 C shell 命令,你需要把下面的內(nèi)容添加到 .cshrc 文件中猎塞。
setenv PATH /usr/local/jdk1.6.0_15/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.6.0_15
或者试读,如果你使用集成開發(fā)環(huán)境(IDE),如 Borland JBuilder荠耽,Eclipse钩骇,IntelliJ IDEA 或者 Sun ONE Studio,編譯和運(yùn)行一個(gè)簡單的程序铝量,用來確認(rèn) IDE 知道你安裝了 Java倘屹,否則應(yīng)該根據(jù) IDE 給定的文檔做正確的設(shè)置。
第 2 步:安裝 Apache Commons Logging API
你可以從?http://commons.apache.org/logging/?下載 Apache Commons Logging API 的最新版本慢叨。一旦你下載完安裝包纽匙,并且解壓二進(jìn)制的發(fā)行版本到一個(gè)方便的位置。例如在 windows 上的 C:\commons-logging-1.1.1 中拍谐,或在 Linux/Unix 上的 /usr/local/commons-logging-1.1.1 中烛缔。該目錄將有如下的 jar 文件和其他支持的文件等。
確保你在這個(gè)目錄上正確的設(shè)置 CLASSPATH 變量轩拨,否則你將會(huì)在運(yùn)行應(yīng)用程序時(shí)遇到問題践瓷。
第 3 步:安裝 Eclipse IDE
本教程中的所有例子使用 Eclipse IDE 編寫。所以我建議你應(yīng)該在你的機(jī)器上安裝 Eclipse 的最新版本亡蓉。
為了安裝 Eclipse IDE晕翠,從?http://www.eclipse.org/downloads/?上下載最新的 Eclipse 二進(jìn)制文件。你下載完安裝包砍濒,可以解壓二進(jìn)制的發(fā)行版本到一個(gè)方便的位置崖面。例如在 windows 上的 C:\eclipse 中元咙,或在 Linux/Unix 上的 /usr/local/eclipse 中,最后恰當(dāng)?shù)脑O(shè)置 PATH 變量巫员。
在 Windows 機(jī)器上庶香,可以通過執(zhí)行以下命令啟動(dòng) Eclipse,或者可以簡單地雙擊 eclipse.exe简识。
在 Unix(Solaris 和 Linux 等)上赶掖,可以通過執(zhí)行下面的命令啟動(dòng) Eclipse:
啟動(dòng)成功后,如果一切正常七扰,它應(yīng)該顯示下面的結(jié)果:
第 4 步:安裝 Spring 框架庫
如果前三個(gè)步驟一切正常奢赂,你就可以繼續(xù)設(shè)置你的 Spring 框架。下面是在電腦上下載并安裝框架的簡單步驟颈走。
選擇是要在 Windows 還是在 UNIX 上安裝 Spring膳灶,然后繼續(xù)進(jìn)行下一個(gè)步驟,在 Windows 上下載 .zip 文件,在 Unix 上安裝則下載 .tz 文件立由。
從?http://repo.spring.io/release/org/springframework/spring?下載最新版本的 Spring 框架的二進(jìn)制文件轧钓。
在寫本教程的時(shí)候,我在我的 Windows 機(jī)器上下載了?spring-framework-4.1.6.RELEASE-dist.zip锐膜,當(dāng)你解壓縮下載的文件時(shí)毕箍,它內(nèi)置的目錄結(jié)構(gòu)為 E:\spring,如下所示道盏。
你會(huì)在目錄?E:\spring\libs?中發(fā)現(xiàn)所有的 Spring 庫而柑。確保你在這個(gè)目錄上正確的設(shè)置 CLASSPATH 變量,否則你將會(huì)在運(yùn)行應(yīng)用程序時(shí)遇到問題荷逞。如果使用的是 Eclipse媒咳,就不需要設(shè)置 CLASSPATH,因?yàn)樗械脑O(shè)置將通過 Eclipse 完成种远。
一旦你完成了最后一步后伟葫,你就可以繼續(xù)你的第一個(gè) Spring 例子,你將會(huì)在下一章中看到院促。
4.Spring Hello World 實(shí)例
Hello World 實(shí)例
讓我們使用 Spring 框架開始實(shí)際的編程筏养。在你開始使用 Spring 框架編寫第一個(gè)例子之前,你必須確保已經(jīng)正確地設(shè)置了 Spring 環(huán)境常拓,正如在?Spring——環(huán)境設(shè)置?教程中如所說的渐溶。假設(shè)你有了解一些有關(guān) Eclipse IDE 工作的知識(shí)。
因此弄抬,讓我們繼續(xù)編寫一個(gè)簡單的 Spring 應(yīng)用程序茎辐,它將根據(jù)在 Spring Beans 配置文件中配置的信息輸出 “Hello World!” 或其他信息。
第 1 步:創(chuàng)建 Java 項(xiàng)目
第一步是使用 Eclipse IDE 創(chuàng)建一個(gè)簡單的 Java 項(xiàng)目拖陆。按照選項(xiàng)?File -> New -> Project弛槐,最后從向?qū)Я斜碇羞x擇?Java Project?向?qū)А,F(xiàn)在依啰,使用向?qū)Т翱趯⒛愕捻?xiàng)目命名為?HelloSpring乎串,如下所示:
一旦你的項(xiàng)目創(chuàng)建成功后,將在?Project Explorer?看到下面的內(nèi)容:
第 2 步:添加必需的庫
第二步讓我們添加 Spring 框架和通用的日志 API 庫到我們的項(xiàng)目中速警。為了做到這個(gè)叹誉,在你的項(xiàng)目名稱?HelloSpring?上單擊右鍵,然后在快捷菜單上按照下面可用的選項(xiàng):Build Path -> Configure Build Path?顯示 Java 構(gòu)建路徑窗口闷旧,如下所示:
現(xiàn)在长豁,在?Libraries?標(biāo)簽中使用可用的?Add External JARs?按鈕,添加從 Spring 框架和通用日志安裝目錄下面的核心 JAR 文件:
spring-aop-4.1.6.RELEASE
spring-aspects-4.1.6.RELEASE
spring-beans-4.1.6.RELEASE
spring-context-4.1.6.RELEASE
spring-context-support-4.1.6.RELEASE
spring-core-4.1.6.RELEASE
spring-expression-4.1.6.RELEASE
spring-instrument-4.1.6.RELEASE
spring-instrument-tomcat-4.1.6.RELEASE
spring-jdbc-4.1.6.RELEASE
spring-jms-4.1.6.RELEASE
spring-messaging-4.1.6.RELEASE
spring-orm-4.1.6.RELEASE
spring-oxm-4.1.6.RELEASE
spring-test-4.1.6.RELEASE
spring-tx-4.1.6.RELEASE
spring-web-4.1.6.RELEASE
spring-webmvc-4.1.6.RELEASE
spring-webmvc-portlet-4.1.6.RELEASE
spring-websocket-4.1.6.RELEASE
第 3 步:創(chuàng)建源文件
現(xiàn)在讓我們在?HelloSpring?項(xiàng)目下創(chuàng)建實(shí)際的源文件忙灼。首先匠襟,我們需要?jiǎng)?chuàng)建一個(gè)名為?com.tutorialspoint?的包。在 package explore 區(qū)域中的?src?上點(diǎn)擊右鍵该园,并按照選項(xiàng):New -> Package酸舍。
接下來,我們在包 com.tutorialspoint 下創(chuàng)建?HelloWorld.java?和?MainApp.java?文件爬范。
這里是?HelloWorld.java?文件的內(nèi)容:
下面是第二個(gè)文件?MainApp.java?的內(nèi)容:
關(guān)于主要程序有以下兩個(gè)要點(diǎn)需要注意:
第一步是我們使用框架 API?ClassPathXmlApplicationContext()?來創(chuàng)建應(yīng)用程序的上下文。這個(gè) API 加載 beans 的配置文件并最終基于所提供的 API弱匪,它處理創(chuàng)建并初始化所有的對(duì)象青瀑,即在配置文件中提到的 beans。
第二步是使用已創(chuàng)建的上下文的?getBean()?方法來獲得所需的 bean萧诫。這個(gè)方法使用 bean 的 ID 返回一個(gè)最終可以轉(zhuǎn)換為實(shí)際對(duì)象的通用對(duì)象斥难。一旦有了對(duì)象,你就可以使用這個(gè)對(duì)象調(diào)用任何類的方法帘饶。
第 4 步:創(chuàng)建 bean 的配置文件
你需要?jiǎng)?chuàng)建一個(gè) Bean 的配置文件哑诊,該文件是一個(gè) XML 文件,并且作為粘合 bean 的粘合劑即類及刻。這個(gè)文件需要在?src?目錄下創(chuàng)建镀裤,如下圖所示:
通常開發(fā)人員保存該文件的名稱為?Beans.xml?文件,當(dāng)然你也可以設(shè)置成任何你喜歡的名稱缴饭。但是你必須確保這個(gè)文件在 CLASSPATH 中是可用的暑劝,并在主應(yīng)用程序中使用相同的名稱,而在 MainApp.java 文件中創(chuàng)建應(yīng)用程序的上下文颗搂。
Beans.xml 用于給不同的 bean 分配唯一的 ID担猛,并且控制不同值的對(duì)象的創(chuàng)建,而不會(huì)影響 Spring 的任何源文件。例如傅联,使用下面的文件先改,你可以為 “message” 變量傳遞任何值,因此你就可以輸出信息的不同值蒸走,而不會(huì)影響的 HelloWorld.java和MainApp.java 文件仇奶。讓我們來看看它是如何工作的:
? ? http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloWorld" class="com.tutorialspoint.HelloWorld"><property name="message" value="Hello World!"/></bean></beans>
當(dāng) Spring 應(yīng)用程序被加載到內(nèi)存中時(shí),框架利用了上面的配置文件來創(chuàng)建所有已經(jīng)定義的 beans载碌,并且按照標(biāo)簽的定義為它們分配一個(gè)唯一的 ID猜嘱。你可以使用標(biāo)簽來傳遞在創(chuàng)建對(duì)象時(shí)使用不同變量的值。
第 5 步:運(yùn)行程序
一旦你完成了創(chuàng)建源代碼和 bean 的配置文件后嫁艇,就可以準(zhǔn)備編譯和運(yùn)行你的程序了朗伶。為了做到這個(gè),請保持 MainApp.Java 文件標(biāo)簽是有效的步咪,并且在 Eclipse IDE 中使用可用的 Run 選項(xiàng)论皆,或使用?Ctrl + F11?編譯并運(yùn)行你的應(yīng)用程序?MainApp。如果你的應(yīng)用程序一切都正常猾漫,將在 Eclipse IDE 控制臺(tái)打印以下信息:
恭喜你点晴,你已經(jīng)成功地創(chuàng)建了你的第一個(gè) Spring 應(yīng)用程序。通過更改 “message” 屬性的值并且保持兩個(gè)源文件不變悯周,你可以看到上述 Spring 應(yīng)用程序的靈活性粒督。下一步,我們開始在接下來的幾個(gè)章節(jié)中做一些更有趣的事情禽翼。