人人都愛Spring加Hibernate。 但Spring MVC+hibernate的Sample如Appfuse的代碼卻算不得最簡潔優(yōu)美好讀,如果在自己的項(xiàng)目中繼續(xù)發(fā)揮我們最擅長的依樣畫葫蘆大法,美好愿望未必會實(shí)現(xiàn)。 所以,Pramatic精神不滅。這個(gè)系列就是探尋最適合自己的Spring+Hibernate模式。 I-配置文件簡化 我厭倦一切配置文件繁重的框架。 1.1.autowire="byName" /"byType" 假設(shè)Controller有一個(gè)屬性名為customerDAO,Spring就會在配置文件里查找有沒有名字為CustomerDAO的bean, 自動為Controller注入。 1.2.<bean>節(jié)點(diǎn)之間抽象公共定義和 Inner Bean 這太方便懶人了,想不到兩個(gè)獨(dú)立的XML節(jié)點(diǎn)都可以玩繼承和派生,子節(jié)點(diǎn)擁有父節(jié)點(diǎn)的全部屬性。 1.3. 寬松的配置, To XML or Not to XML 2.簡化后的配置文件 1.Controller只剩下一句 <bean name="customerController" class="org.springside.bookstore.web.CustomerController" autowire="byName"/> 2.DAO也只剩一句 <bean id="customerDAO" class="org.springside.bookstore.dao.CustomerDao"/>
3.Service類只剩下5行 <bean id="customerManager" parent="baseTxService">
<property name="target"> <bean class="org.springside.bookstore.service.CustomerManager"/> </property> </bean> 3.Spring 1.2后xml語法簡化 1.屬性值
<property name="foo"> ![]() </property> 簡化為 <property name="foo" value="fooValue"/> ![]() 2.引用 bean ![]() ![]() ![]() ![]() ![]() 3. list可以簡化為空格分開的字符串 ![]() ![]() ![]() <value>wuyu</value> ![]() ![]() ![]() ![]() ![]() 4.Spring 2.0來了 如果沒什么外力刺激,spring xml 可能就這樣不會變了。但現(xiàn)在xml成了過街老鼠,被ror的默認(rèn)配置和JDK5的annotation逼得不行,當(dāng)然就要繼續(xù)求變。 比如有好事者認(rèn)為,節(jié)點(diǎn)名必須以bean打頭,附加一個(gè)屬性id來表示bean名;屬性值必須搞一個(gè)property子節(jié)點(diǎn),子節(jié)點(diǎn)上有個(gè)屬性name來表示屬性名,是給機(jī)器看的很不直觀的東西。 <bean id="customerDAO" class="org.springside...CustomerDAO"> <property name="maxCount" value="10"> </bean> 給人看的東西應(yīng)該就寫成 <customerDAO class="org.springside....CustomerDAO" maxCount="10"/> Spring 2.0正用schema實(shí)現(xiàn)類似的語法,具體請看它的JPetStore sample。 5.使用Spring自帶的DTD使編輯器Smart.
如果沒有用Eclipse的Spring插件,那至少也要使用spring自帶的dtd使XML編輯器smart一些,能夠自動為你生成屬性,判斷節(jié)點(diǎn)/屬性名稱有沒有拼錯(cuò)等。 |
|