ssh整合主要是将hibernate和struts2的对象都交给spring进行管理。spring与hibernate、spring与struts2分别进行整合。
struts2在创建action时,就是交给spring进行处理,在applicationContext中创建action
//因为action是多实例的,所以在创建对象时要声明scope="prototype"
<bean id="registerAction" class="com.melon.action.RegisterAction" scope="prototype">
<property name="userService" ref="userServiceImpl"></property>
</bean>
在struts2配置文件中,唯一不同的是在action标签中的calss属性不是填写action的全路径,而是在applicationContext中的bean的id
<package name="register" extends="struts-default" namespace="/">
<action name="registerAction" class="registerAction"></action>
</package>
spring与hibernate整合
先配置dataSource
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
<property name="user" value="root"></property>
<property name="password" value="1"></property>
</bean>
再将dataSource注入orm自带的sessionFactoryBean中
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 指定hibernate配置文件地址 -->
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>
最后再进行事务管理器的配置
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 开启事务管理器 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
在web.xml里可以用监听器让服务器启动时加载spring配置文件
<!-- 监听器实现在服务器启动时加载applicationConext的配置信息 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定applicationContext的路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
完成基本的ssh整合