上一篇我們成功搭建好了spring開發(fā)的環(huán)境,接下來一起看看spring有什么神奇的地方吧(本人也是新手,有不太對的地方希望大神給指出便于修改呢,謝謝大家)。
之前聽說spring是在對xml文件的應用比較多,但是具體怎么用一直都是云里霧里,自己在剛開始的時候學習的時候,因為不是直接新建的web項目,沒有自動生成applicationContext.xml,那會不知道這個配置文件是多么的重要,所以在寫了如下一段代碼之后,運行時,總是報錯,還曾傻傻地以為該文件會自動生成,現在想想真可笑。不過如果用myeclipes中自動導入spring架包的功能的話,會自動生成的。現在提醒大家,對于applicationContext.xml一定要首先確認其的存在,再進行接下來的代碼開發(fā)。(對于這種問題,大神們就不必細看了)
applicationContext.xml代碼我已在上一篇博客中給出,我存放在src目錄下,在此我給出鏈接:http://m.survivalescaperooms.com/speedwade/p/3968101.html
接下來是我寫的一個測試的小程序,看看,spring是否已經成功配好,路徑我放在src目錄下com.sep.basic包下,新建一個class類,命名為SpringTest。因為我已建好,所以會提示文件已存在,第一次新建時不會有該提示出現,如圖

然后其中代碼為
1 package com.sep.basic; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class SpringTest { 7 public static void main(String args[]) 8 { 9 //創(chuàng)建applicationcontext10 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");11 //輸出spring容器12 System.out.println(ctx);13 }14 }在新建好的文件上鼠標右鍵點擊Run As/Java Application后,在控制臺會出現類似如下代碼:
1 org.springframework.context.support.ClassPathXmlApplicationContext@b749757: startup date [Mon Sep 15 17:21:18 CST 2014]; root of context hierarchy
下面我們來解釋一下,在SpringTest.java中,我們僅僅創(chuàng)建了ApplicationContext的實例,而他正是Spring容器,只有獲得了容器,我們才能成功訪問容器中的Bean。輸出的正是我們創(chuàng)建的ApplicationContext實例。Spring中大部分功能都是通過這個容器來實現的。所以可見它的強大。
下面我們來新建一個簡單的bean來看看Spring是怎么工作的。
首先新建一個簡單的java類文件,命名為FirstBeanTest,其路徑為com.sep.basic.service包下。其代碼為:
1 package com.sep.basic.service; 2 3 public class FirstBeanTest { 4 private String name; 5 //name屬性的setter方法 6 public void setName(String name) { 7 this.name = name; 8 } 9 //測試類的info方法10 public void Info()11 {12 System.out.println("FirstBean's Name is "+name);13 }14 }上面給出了一個成員變量與他的set方法。
然后在applicationContext.xml中添加下面代碼:
1 <!-- 將FirstBeanTest類部署到Spring中的bean中 -->2 <bean id="firstBeanTest" class="com.sep.basic.service.FirstBeanTest">3 <property name="name" value="success"></property>4 </bean>
接下來再次回到SpringTest文件中增加代碼如下:
1 FirstBeanTest fbt = ctx.getBean("firstBeanTest",FirstBeanTest.class);2 3 fbt.Info();好,現在運行,可以看到輸出語句:FirstBean's Name is success
是不是很神奇?我們并沒有手動去創(chuàng)建FirstBeanTest的實例,為什么還會成功的為其賦值呢?這就是Spring的職責了,我們只需要通過spring容器來就可以獲得實例對象,并且可以賦值,這都是spring的功勞,spring會根據配置信息,獲得對應的實例,并且為其設置對應的屬性值。
這種現象就是我們經常聽說的控制反轉(IOC)。
新聞熱點
疑難解答