JAVAWEB 一一 框架整合(SSH,Spring+Struts2+Hibernate)

时间:2022-04-03 04:59:33

JAVAWEB 一一 框架整合(SSH,Spring+Struts2+Hibernate)

 

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
default-lazy-init="false"
default-autowire="no"
>

<!--支持基于注解的配置方式,为@Autowired、@Resource、@PostConstruct、@PreDestroy注解提供支持 -->
<context:annotation-config/>

<!--支持annotation实现aop,并允许为没有实现接口的类实现切面 -->
<aop:aspectj-autoproxy proxy-target-class="true" />

<bean id="dataSource" destroy-method="close"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 连接数据库的驱动类 -->
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<!-- 连接数据库的url -->
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<!-- 连接数据库的用户名 -->
<property name="user" value="scott"/>
<!-- 连接数据库的密码 -->
<property name="password" value="orcl"/>
<!-- 连接池的最大连接数 -->
<property name="maxPoolSize" value="40"/>
<!-- 连接池的最小连接数 -->
<property name="minPoolSize" value="1"/>
<!-- 初始化连接数 -->
<property name="initialPoolSize" value="1"/>
<!-- 连接的最大空闲时间,超时的连接将被丢弃,单位:秒 -->
<property name="maxIdleTime" value="60"/>
<!-- 没有连接可用时,等待连接的时间,单位:毫秒 -->
<property name="checkoutTimeout" value="2000"/>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingLocations">
<list>
<value>classpath:com/ssh/entity/*.hbm.xml</value>
</list>

</property>
</bean>

<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- 为baseDaoImpl注入hibernateTemplate -->
<bean id="baseDao" class="org.springframework.orm.hibernate3.BaseDaoImpl" abstract="true">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>

<!-- 所有dao对象,注意dao需要继承baseDao -->
<!-- <bean id="groupDao" class="com.pb.dao.impl.GroupDaoImpl" parent="baseDao"></bean>
<bean id="userDao" class="com.pb.dao.impl.UserDaoImpl" parent="baseDao"></bean>

所有service对象,注意service需要注入dao
<bean id="groupService" class="com.pb.service.impl.GroupServiceImpl">
<property name="groupDao" ref="groupDao" />
</bean>
<bean id="userService" class="com.pb.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" />
<property name="groupDao" ref="groupDao" />
</bean> -->



<!-- AOP 辅助功能 比如 日志 事务 性能 等 -->
<!-- 声明式事务处理配置 -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 其他的事务处理配置 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<!-- 匹配所有方法 -->
<tx:method name="*" propagation="REQUIRED"/>
<!-- 配置查询方法的事务处理操作为只读 -->
<tx:method name="search*" read-only="true"/>
<!-- 不将getter和setter方法纳入事务处理 -->
<tx:method name="get*" propagation="NEVER"/>
<tx:method name="set*" propagation="NEVER"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 配置链接点 (切入点) -->
<aop:pointcut expression="execution(public * com.ssh.service.*.*(..))"
id="servicepointcut"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="servicepointcut"/>
</aop:config>
<!-- 控制反转ioc di注入 -->
<bean id="userDao" class="com.ssh.dao.impl.UserDaoImpl" parent="baseDao"></bean>
<bean id="userService" class="com.ssh.service.impl.UserServiceImpl" >
<property name="userDao">
<ref bean="userDao"/>
</property>
</bean>
<!-- 配置Struts2 Action 的bean -->
<bean id="userAction" class="com.ssh.action.UserAction" scope="prototype">
<property name="service" ref="userService"/>

</bean>

<bean id="empDao" class="com.ssh.dao.impl.EmpDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean id="empService" class="com.ssh.service.impl.EmpServiceImpl">
<property name="empDao" ref="empDao"/>
</bean>
<bean id="empAction" class="com.ssh.action.EmpAction">
<property name="empService" ref="empService"/>
</bean>

</beans>