想必用過SPRing的程序員們都有這樣的感覺,Spring把邏輯層封裝的太完美了(個(gè)人感覺View層封裝的不是很好)。以至于有的初學(xué)者都不知道Spring配置文件的意思,就拿來用了。所以今天我給大家詳細(xì)解釋一下Spring的applicationContext.xml文件。Ok,還是通過代碼加注釋的方式為大家演示:
以下是詳解Spring的applicationContext.xml文件代碼:<!-- 頭文件,主要注意一下編碼 -->
[html]view plaincopyprint?<!-- 建立數(shù)據(jù)源 -->
[html]view plaincopyprint?<!-- 數(shù)據(jù)庫驅(qū)動(dòng),我這里使用的是MySQL數(shù)據(jù)庫 -->
[html]view plaincopyprint?<!-- 數(shù)據(jù)庫地址,這里也要注意一下編碼,不然亂碼可是很郁悶的哦! -->
[html]view plaincopyprint?<!-- 數(shù)據(jù)庫的用戶名 -->
[html]view plaincopyprint?<!-- 數(shù)據(jù)庫的密碼 -->
[html]view plaincopyprint?<!-- 把數(shù)據(jù)源注入給session工廠 -->
[html]view plaincopyprint?<!-- 配置映射文件 -->
[html]view plaincopyprint?<!-- 把Session工廠注入給hibernateTemplate --><!-- 解釋一下hibernateTemplate:hibernateTemplate提供了很多方便的方法,在執(zhí)行時(shí)自動(dòng)建立 HibernateCallback 對(duì)象,例如:load()、get()、save、delete()等方法。 -->
[html]view plaincopyprint?<!-- 把DAO注入給Session工廠 -->
[html]view plaincopyprint?<!-- 把Service注入給DAO -->
[html]view plaincopyprint?<!-- 把Action注入給Service -->
[html]view plaincopyprint?以上Spring的applicationContext.xml文件我是用的SSH架構(gòu),如果您用Spring的MVC架構(gòu),其原理也是一樣的。
對(duì)里面的一些概念還不熟悉,一個(gè)字"暈"啊,在網(wǎng)上搜搜資料,解釋一下applicationcontext.xml
我們以項(xiàng)目中的訂單Order為例簡(jiǎn)要說明一下Spring與Hibernate的集成。關(guān)于如何使用Hibernate來對(duì)數(shù)據(jù)庫表做映射,我們?cè)谇懊嬉呀?jīng)做了介紹,這里我們關(guān)心的是如何配置Spring,使它能管理Hibernate。其實(shí),只要在Spring的配置文件(我們這里是applicationContext.xml)中配置一個(gè)叫做sessionFactory的bean,Spring就可以和Hibernate聯(lián)系起來了。
[html]view plaincopyprint?這樣,Spring和Hibernate的第一步整合就完成了,現(xiàn)在到了關(guān)鍵的地方——如何讓Spring和Hibernate雙劍合璧來實(shí)現(xiàn)業(yè)務(wù)邏輯?
還是在applicationContext.xml文件中先做一個(gè)配置。
[html]view plaincopyprint?在上面你大概可以感覺到Spring給我們帶來的好處了,Spring的IoC模式可以統(tǒng)一管理各層,而又使各層松散耦合在一起,使各層之間實(shí)現(xiàn)最大的解耦性,這也是Web架構(gòu)一向的追求。
但是,Spring帶來的好處還不止于此,除了IoC還有AOP,Spring可以運(yùn)用AOP來實(shí)現(xiàn)很多功能,最常用的就是事務(wù)處理。這里我們用了業(yè)務(wù)服務(wù)(business service)層和數(shù)據(jù)存取對(duì)象(Data access Object)層,在業(yè)務(wù)服務(wù)層我們?cè)黾邮聞?wù)處理,數(shù)據(jù)存取對(duì)象層負(fù)責(zé)數(shù)據(jù)讀寫。
首先,組裝配置好Service Beans。
[html]view plaincopyprint?之后,需要把業(yè)務(wù)服務(wù)對(duì)象和數(shù)據(jù)存取對(duì)象也組裝起來,并把這些對(duì)象配到一個(gè)事務(wù)管理器(transaction manager)里。
在Spring中的配置信息。
[html]view plaincopyprint?每個(gè)對(duì)象都聯(lián)系著Spring,并且能通過Spring注入到其他對(duì)象。把它與Spring的配置文件比較,觀察他們之間的關(guān)系。
Spring就是這樣基于配置文件,將各個(gè)Bean搭建在一起的。
這里我們使用一個(gè)TransactionProxyFactoryBean,它定義了一個(gè)setTransactionManager(),這個(gè)對(duì)象很有用,它能很方便地處理你申明的Service Object中的事物,你可以通過transaction Attributes屬性來定義怎樣處理。
TransactionProxyFactoryBean還有個(gè)setter,這會(huì)被業(yè)務(wù)服務(wù)對(duì)象(orderTarget)引用,orderTarget定義了業(yè)務(wù)服務(wù)層,并且它還有個(gè)屬性,由setOrderDAO()引用這個(gè)屬性。
還有一點(diǎn)要注意,bean可以用兩種方式創(chuàng)造,這些都在單例模式(Sington)和原型模式(propotype)中定義了。默認(rèn)的方式是singleton,這意味著共享的實(shí)例將被束縛,而原型模式是在Spring用到bean的時(shí)候允許新建實(shí)例的。當(dāng)每個(gè)用戶需要得到他們自己Bean的Copy時(shí),你應(yīng)該僅使用prototype模式。
這樣,Spring和Hibernate就完成了對(duì)業(yè)務(wù)對(duì)象的管理。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注