javaee平台搭建,struts2+spring3+hibernate4

    先从整体来说,系统用了典型MVC设计理念,前端和业务之间的交互采用jsp+struts2,数据库的事务操作都使用hibernate实现,spring来管理两者之间的关系,提供依赖注入(DI)和切面事务(AOP),整个一个web项目整体上的配置主要体现在web.xml中,下面先说web.xml配置要点。

(1)、配置过滤器 OpenSessionInViewFilter,主要功能是用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定,但出现org.hibernate.LazyInitializationException错误的时候,需要配置这个filter

(2)、配置log4j,包括log4j的存放位置,配置文件默认刷新时间,监听器等,

(3)、spring的XML配置文件和spring监听器的配置,这里配置的是整个项目的spring配置文件,多数业务都是这里完成

(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。

    在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确实很优美,几行配置就搞定数据的事务,切面编程的优点。

<!-- 配置事务管理器 -->      
    <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会更好。

学生一枚,欢迎纠错!!!


你可能感兴趣的:(javaee平台搭建,struts2+spring3+hibernate4)