Struts+Spring+Hibernate整合的簡單實例

openkk 12年前發布 | 41K 次閱讀 Struts Spring Hibernate JEE框架

Spring是開源中間件,廣泛應用于java應用中。Spring借由IoC來實現對一整套開發工具箱的支持,他的每個組件都是可替換的。類似于主板上的器件,可以替換升級,以保證電腦的最優化。

IOC

Spring的核心機制是控制反轉IoC(inversion of control),也就是依賴注入(DI)。所謂依賴注入簡單講就是創建被調用工作不必要調用者完成,而是將控制權轉交給容器。平常在對象A調用對象B的時候,必須在程序中新建對象B,再傳入對象A的方法中去。現在我們取消了這兩者的親密耦合關系,在運行中使用set方法,將B存入對象A的屬性中。使這個程序保持了使用開放性(A調用新增的C等)和修改閉合性(增加C時不用修改A)。而Spring的作用在于其配置文件接管了我們的setter器方法,把我們需要依賴注入的東西(例如user.addFood(apple)),交給了xml配置文件來完成。

配置文件

Spring的配置文件applicationContext.xml文件,其中主要就是配置各種bean對象,給他們建立關系,下文配置為例,實際上是把orange代表的類com.spring.demo.Orange的實力作為參數傳給了com.spring.demo.Man類實例,需要注意的是Man類實例里必須有setFood(Food food) 這個方法做依賴注入。

Spring的兩種注入方式

Spring有兩種注入方式,分別是上文配置文件中所述的屬性注入和另一種叫做建構注入方式,建構注入方式需要的參數<constructor-arg ref="beanB" />而且有著和其父Bean類構造方法完全一致的注入順序。

這就要求父類的構造方法有這樣的結構

    public Man(Food food) {  
                      this.food =food;  
    }  

Spring的新特性

Spring從2.5版本開始支持Annotation特性,新特性更靈活方便配置Bean信息。

業務邏輯的處理

在業務邏輯中,首先需要提取XML配置的信息。使用ClassPathXmlApplicationContext("xxx.xml")的方式,加載xml配置文件:

ApplicationContext ctx = new ClassPathXmlApplicationContext("config.xml");

UserV2 peter = (UserV2) ctx.getBean("peter");

其后業務邏輯部分使用peter即可。

Web.xml配置

web.xml文件作為web project的配置文件,負責項目初始化和參數配置信息。一開始需要設置springframework的主要工作類 DispatcherServlet。這個類負責接受分發請求。我們需要給他設定優先啟動,同時設置servlet-mapping來設定URL請求。

Web下Spring的VC配置文件

不同于其他java項目, WEB-INF目錄下需要新建與初始類同名的配置文件[servlet-name]-servlet.xml配置文件(這里就是spring- servlet.xml),這個配置文件負責MVC中的V和C的配置。其中配置了控制器類C,視圖類V和映射到該控制器的URL信息。這樣我們的請求信息,經由設定控制器處理,轉發到設定的視圖顯示。為了處理提交數據,需要建立POJO類來存儲表單數據,在控制器類中對表單數據進行加載處理。同時在控制類中有個主要的方法ModelAndViewhandle方法,該方法返回一個附加跳轉信息的ModelAndView用來處理跳轉。

總體流程

在web方式下總體流程圖如下:


一些其他事情

容器:其實就是把類委托給另一個類來管理。例如一個類A里有兩個屬性分別存儲了B和C,A相對B和C來講就是容器。

POJO:Plain Old Java Object,就是一個普通java類的意思,可以視為有一些屬性,以及屬性的getter和setter訪問器的類。

AOP: Aspect-Oriented Programming,面向切面(方面)的編程。該模式為了減小模塊之間的耦合度而生,其將處理流程劃分成各種斷面,數據流過這些斷面,。

來自:http://blog.csdn.net/gongqingkui/article/details/8028812

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!