---------------SSH(Spring4.2+Hibernate5.1+Struts2.3.28)三大框架的整合-------------
一、新建一个Web项目,并集成Spring框架
1.3在resources文件夹中建立config(Hibernate框架)和context(Spring框架)两个包名
1.4然后再context中建立applicatio-framework.xml文件并配置步骤如下:
1)装载数据库连接的属性内容前 --- >建立jdbc.propreties文件
#database connection
connection.driver_class com.mysql.jdbc.Driver
connection.url jdbc:mysql://127.0.0.1:3306/test
connection.username root
connection.password root
2)正式建立装载数据库连接的属性内容
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 这里的name = location 是从源文件中setLocation中得到的,因为有setLocation就可定有location属性-->
<proprety name="location" value="classpath:jdbc.propreties"></proprety> ******(这里默认调用webContext,要让其调用类中的spring容器.xml文件)
</bean>
3)配置数据源 操作数据库
<!-- 这里的class等于是指Spring-jdbc.jar源文件中的DriverManagerDataSource的全路径-->
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${connection.driver_class}"/>
<property name="url" value="${connection.url}"/>
<property name="username" value="${connection.username}"/>
<property name="password" value="${connection.password}"/>
</bean>
二、把hibernate的SessionFactory对象整合到Spring容器进行管理
hibernate(ORM--对象关系映射)
<!--class等于的是spring-orm 中的hibernate5的LocalSessionFactoryBean的全路径-->
1. <bean id="mySessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!--引用数据源 ref等于上面的myDataSource-->
<property name="dataSource" ref="myDataSource">
<!-- 把Hibernate(orm)映射文件.hbm.xml整合到SessionFactory对象中-->
<property name="mappingLocations">
<list>
<value>classpath:com/ssh/xml/entity/hbm/*.hbm.xml</value> ******(这里默认调用webContext,要让其调用类中的spring容器.xml文件)
</bean>
</list>
</property>
<!-- 配置Hibernate额外属性 来自jabc.properties文件-->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
三、配置使用AOP对业务层类中的方式进行事务管理
1. 配置SessionFactory对象的事务管理
<bean id="myTransactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<properties name="sessionFactory" ref="mysessionFactory"/>
</bean>
2. <!-- 配置声明性事务管理 -->
<!-- 2.1配置监听器 -->
<tx:advice id="txAdvice" transaction-manager="myTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="get*" propagation="REQUIRED"/>
<!--业务异常回滚rollback-for="异常父类"-->
<tx:method name="*" propagation="SUPPORTS" rollback-for="com.ssh.xml.common.exception.BaseBusinessException"/>
</text:advice>
</tx:attributes>
<!--2.2 组成事务传播和切入点Aop面向切面编程-->
<aop:config>
<aop:pointcut expression="execution(* com.ssh.xml.*.service.*.*(..))" id="pcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pcut"/>
</aop:config>
</beans>
四、配置struts2框架并交由spring框架使用
1.在web.xml文件中配置struts2
<!--这里才是将struts框架交由spring容器进行管理-->
2.在resources文件下创建一个struts.xml文件
并在里面配置<struts><constant name="struts.objectFactory" vlaue="spring"></constant></struts>
3.在web.xml后面接着配置
<!-- 在服务器启动时候自动实例化Spring容器-->
<!-- 3.1配置初始化Spring容器监听器-->配置spring-web-4.2.5.RELEASE.jar,spring-tx-4.2.5.RELEASE.jar包
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 3.2配置实例化spring容器的参数 这里要加上classpath:前缀,因为默认的是webContext中,这里让它调用classpath(类中的spring容器.xml文件)-->
<context-param>
<param-name>contextConfigLoation</param-name>
<param-value>classpath:spring容器的名称,如果有多个spring容器直接在后面加上中间用逗号隔开</param-value>
</context-param>
16:55 2016/5/5
一、新建一个Web项目,并集成Spring框架
1.1往lib中添加jar包Spring包
1.2建立roesouces文件建立application.xml文件,并配置属性1.3在resources文件夹中建立config(Hibernate框架)和context(Spring框架)两个包名
1.4然后再context中建立applicatio-framework.xml文件并配置步骤如下:
1)装载数据库连接的属性内容前 --- >建立jdbc.propreties文件
#database connection
connection.driver_class com.mysql.jdbc.Driver
connection.url jdbc:mysql://127.0.0.1:3306/test
connection.username root
connection.password root
2)正式建立装载数据库连接的属性内容
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 这里的name = location 是从源文件中setLocation中得到的,因为有setLocation就可定有location属性-->
<proprety name="location" value="classpath:jdbc.propreties"></proprety> ******(这里默认调用webContext,要让其调用类中的spring容器.xml文件)
</bean>
3)配置数据源 操作数据库
<!-- 这里的class等于是指Spring-jdbc.jar源文件中的DriverManagerDataSource的全路径-->
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${connection.driver_class}"/>
<property name="url" value="${connection.url}"/>
<property name="username" value="${connection.username}"/>
<property name="password" value="${connection.password}"/>
</bean>
二、把hibernate的SessionFactory对象整合到Spring容器进行管理
hibernate(ORM--对象关系映射)
<!--class等于的是spring-orm 中的hibernate5的LocalSessionFactoryBean的全路径-->
1. <bean id="mySessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!--引用数据源 ref等于上面的myDataSource-->
<property name="dataSource" ref="myDataSource">
<!-- 把Hibernate(orm)映射文件.hbm.xml整合到SessionFactory对象中-->
<property name="mappingLocations">
<list>
<value>classpath:com/ssh/xml/entity/hbm/*.hbm.xml</value> ******(这里默认调用webContext,要让其调用类中的spring容器.xml文件)
</bean>
</list>
</property>
<!-- 配置Hibernate额外属性 来自jabc.properties文件-->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
三、配置使用AOP对业务层类中的方式进行事务管理
1. 配置SessionFactory对象的事务管理
<bean id="myTransactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<properties name="sessionFactory" ref="mysessionFactory"/>
</bean>
2. <!-- 配置声明性事务管理 -->
<!-- 2.1配置监听器 -->
<tx:advice id="txAdvice" transaction-manager="myTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="get*" propagation="REQUIRED"/>
<!--业务异常回滚rollback-for="异常父类"-->
<tx:method name="*" propagation="SUPPORTS" rollback-for="com.ssh.xml.common.exception.BaseBusinessException"/>
</text:advice>
</tx:attributes>
<!--2.2 组成事务传播和切入点Aop面向切面编程-->
<aop:config>
<aop:pointcut expression="execution(* com.ssh.xml.*.service.*.*(..))" id="pcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pcut"/>
</aop:config>
</beans>
四、配置struts2框架并交由spring框架使用
1.在web.xml文件中配置struts2
<!--这里才是将struts框架交由spring容器进行管理-->
2.在resources文件下创建一个struts.xml文件
并在里面配置<struts><constant name="struts.objectFactory" vlaue="spring"></constant></struts>
3.在web.xml后面接着配置
<!-- 在服务器启动时候自动实例化Spring容器-->
<!-- 3.1配置初始化Spring容器监听器-->配置spring-web-4.2.5.RELEASE.jar,spring-tx-4.2.5.RELEASE.jar包
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 3.2配置实例化spring容器的参数 这里要加上classpath:前缀,因为默认的是webContext中,这里让它调用classpath(类中的spring容器.xml文件)-->
<context-param>
<param-name>contextConfigLoation</param-name>
<param-value>classpath:spring容器的名称,如果有多个spring容器直接在后面加上中间用逗号隔开</param-value>
</context-param>
16:55 2016/5/5