1。減少配置文件里配置信息的數(shù)量
配置applicationContext.xml或者分布在其它的xml文件中的bean時(shí),設(shè)置bean與bean之間的相互依賴關(guān)系是一件痛苦且容易出錯(cuò)的事。autowire屬性的出現(xiàn)減輕了配置文件的容量。
<bean>的autowire屬性有6個(gè)值。分別為:
a No:即不啟用自動(dòng)裝配。Autowire默認(rèn)的值。
b byName:通過(guò)屬性的名字的方式查找JavaBean依賴的對(duì)象并為其注入。
c byType:通過(guò)屬性的類型查找JavaBean依賴的對(duì)象并為其注入。
d constructor:通byType一樣,也是通過(guò)類型查找依賴對(duì)象。
e autodetect:在byType和constructor之間自動(dòng)的選擇注入方式。
f default:由上級(jí)標(biāo)簽<beans>的default-autowire屬性確定。
在<beans default-autowire="byName">可以為本xml文件設(shè)置默認(rèn)的自動(dòng)裝配的類型例如byName,當(dāng)然在設(shè)置具體的<bean id="***" class="***" autowire="byType">時(shí),會(huì)自動(dòng)改變默認(rèn)的byName為byType。
2。在web.xml中通過(guò)配置如下參數(shù)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/*.xml</param-value>
</context-param>
會(huì)自動(dòng)把WEB-INF/classes/sring目錄下的所有以.xml結(jié)尾的文件加載spring容器進(jìn)行管理,而不必手動(dòng)編寫每個(gè)applicationContex.xml,accessContext.xml等配置文件。
3。利用屬性為mappingDirectoryLocation來(lái)配置相關(guān)的目錄位置,從而避免為該目錄下的所有文件名進(jìn)行配置
<property name="mappingDirectoryLocation">
<list>
<value>classpath:/package1/<value>
</list>
</property>
如:
<!-- 設(shè)置Hibernate3的SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">net.sf.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="hibernate.autoReconnect">true</prop>
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/apache/model</value>
</list>
</property>
</bean>
4。消除ProxyFactoryBean的繁重配置
a.通過(guò)繼承于parent ProxyFactoryBean
b.使用aop自動(dòng)代理的方式
在Spring中進(jìn)行事務(wù)的管理均是基于aop的方式,為每個(gè)需要事務(wù)管理的bean均設(shè)定相應(yīng)的ProxyFactoryBean又是一件非常繁重的工作。使用自動(dòng)代理可以消除這樣的重復(fù)的工作。方法如下,聲明DefaultAdvisorAutoProxyCreator為所有的advisor作為代理,在context上下文中查找所有的advisor,然后自動(dòng)代理那些被在pointcut加入了切面的bean。針對(duì)事務(wù)使用spring中的事務(wù)的advisor,TransactionAttributeSourceAdvisor。
該advisor有兩種方式進(jìn)行注入,一種是setter方式,如下:
<!-- 配置自動(dòng)代理事務(wù) -->
<bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="transactionInterceptor"/>
</bean>
另一種是constructor方式,如下:
<!-- 配置自動(dòng)代理事務(wù) -->
<bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<constructor-arg>
<ref bean="transactionInterceptor"/>
</constructor-arg>
</bean>
建議以constructor方式進(jìn)行注入。