javaee平臺搭建,struts2+spring3+hibernate4

    先從總體來講,系統用了典型MVC設計理念,前端和業務之間的交互採用jsp+struts2,數據庫的事務操做都使用hibernate實現,spring來管理二者之間的關係,提供依賴注入(DI)和切面事務(AOP),整個一個web項目總體上的配置主要體如今web.xml中,下面先說web.xml配置要點。前端

(1)、配置過濾器 OpenSessionInViewFilter,主要功能是用來把一個Hibernate Session和一次完整的請求過程對應的線程相綁定,但出現org.hibernate.LazyInitializationException錯誤的時候,須要配置這個filterweb

(2)、配置log4j,包括log4j的存放位置,配置文件默認刷新時間,監聽器等,spring

(3)、spring的XML配置文件和spring監聽器的配置,這裏配置的是整個項目的spring配置文件,多數業務都是這裏完成sql

(4)、配置Struts2的FilterDispathcer的Filter,前天頁面的跳轉必需要經過struts2數據庫

    web.xml基本上就是這些重要的配置文件,若是須要使用到spring security權限驗證框架,也須要配置相應filter,配置玩web.xml,下面須要配置spring.xml,這裏我把配置文件再分爲相應action.xml、service.xml、dao.xml、db.xml,前面的三個配置文件主要是依賴注入發充分體現,action處理數據須要依賴service,service須要依賴dao,這樣分解可使得代碼結構更加清晰,dao只負責對db的操做,service是相應的業務邏輯處理,而action則是頁面數據的管道,基本上按照action ref相應的service,service ref相應的dao,dao ref sessionFactory。express

    在db.xml中配置比較關鍵,這裏首先配置數據庫的配置文件和驅動源,再配置底層session工廠,依賴屬性包括(3個):數據源、hibernate屬性、映射文件列表,這些是基本的配置編程

<!-- 引入數據庫驅動配置文件 -->
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:jdbc.properties</value>
			</list>
		</property>
	</bean>	
<!-- 配置數據源,包括:數據庫驅動、url、username和password -->
	<bean id="dataSource" class="com.lccp.util.CustomDataSource" destroy-method="close">
		<property name="driverClassName" value="${jdbc.driverClassName}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>	
	</bean>	
<!-- 配置底層session工廠,依賴屬性包括(3個):數據源、hibernate屬性、映射文件列表 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">	
		<property name="dataSource" ref="dataSource"/>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>		
		<property name="mappingResources">
<!-- 映射文件列表,每一個實體類一個映射文件,每一個映射文件都要在這裏給出,注意給出orm映射文件所在的路徑 -->
			<list>
				<value>實體路徑</value>
				
			</list>
		</property>	
	</bean>

在配置事務,也就是spring提供的事務切面,實現全部方法的事務管理,這裏看來spring確實很優美,幾行配置就搞定數據的事務,切面編程的優勢。
session

<!-- 配置事務管理器 -->      
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">    
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>    
        
 	<!-- 配置事務特性 ,配置add、delete和update開始的方法,事務傳播特性爲required -->           
    <tx:advice id="txAdvice" transaction-manager="transactionManager">    
        <tx:attributes> 
            <tx:method name="upd*" propagation="REQUIRED"/>  
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="sav*" propagation="REQUIRED"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="*" propagation="REQUIRED" read-only="true"/>    
        </tx:attributes>    
    </tx:advice>   
        
    <!-- 配置那些類的方法進行事務管理,當前com.lccp.dao包中的子包、類中全部方法須要,還須要參考tx:advice的設置 -->    
    <aop:config>    
        <aop:pointcut id="allManagerMethod" expression="execution (* com.lccp.service.*.*(..))"/>    
        <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
    </aop:config>  
    
     <tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />

主要的配置就這些啦,還有hibernate的實體關係就不一一貼出來了,這些都是以配置文件的形式,相信不少人用完一次不再想用配置文件了,實在是太多了,使用註解會少不少配置,看起來也清楚明白,並且在接觸了spring MVC以後,發現struts2並很差使用,前端部分能夠換成spring mvc會更好。mvc

學生一枚,歡迎糾錯!!!app

相關文章
相關標籤/搜索