<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
">
<!-- 属性文件的加载 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config/dbProperties/mySql.properties</value>
</list>
</property>
</bean>
<!-- 开发环境数据源,上生产环境时更换为JNDI -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
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>
<!-- 事务管理BEAN -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 实体Bean配置文件方式 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<prop key="hibernate.hbm2ddl.auto">
${hibernate.hbm2ddl.auto}
</prop>
<prop key="hibernate.query.substitutions">
${hibernate.query.substitutions}
</prop>
<prop key="hibernate.c3p0.minPoolSize">
${hibernate.c3p0.minPoolSize}
</prop>
<prop key="hibernate.c3p0.maxPoolSize">
${hibernate.c3p0.maxPoolSize}
</prop>
<prop key="hibernate.c3p0.timeout">
${hibernate.c3p0.timeout}
</prop>
<prop key="hibernate.c3p0.max_statement">
${hibernate.c3p0.max_statement}
</prop>
<prop key="hibernate.c3p0.testConnectionOnCheckout">
${hibernate.c3p0.testConnectionOnCheckout}
</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.connection.useUnicode">
${hibernate.connection.useUnicode}
</prop>
<prop key="hibernate.connection.characterEncoding">
${hibernate.connection.characterEncoding}
</prop>
</props>
</property>
<!-- 实体映射定位 -->
<property name="mappingLocations">
<list>
<value>classpath:com/*/*/*/*/entities/hbm/*.hbm.xml</value>
</list>
</property>
</bean>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!-- 事务控制方法-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="remove*" propagation="REQUIRED"/>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 配置那些类的方法进行事务管理 -->
<aop:config>
<!-- 事务表达式 -->
<aop:pointcut id="allManagerMethod" expression="execution (* com.zzf.web.module.bbs.service.impl.*.*(..))" />
<!-- 异常日志表达式 -->
<aop:pointcut id="exceptionPointcut" expression="execution (* com.zzf.web.module.bbs.action.*.*(..)) || execution (* com.zzf.web.module.bbs.service.impl.*.*(..))" />
<!-- 配置事务的传播特性 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
<!-- 异常切面类 -->
<aop:aspect id="exceptionAspect" ref="exceptionInterceptor">
<aop:after-throwing method="exceptionIntercept" pointcut-ref="exceptionPointcut" throwing="ex" />
</aop:aspect>
</aop:config>
<!-- start 配置文件的引用-->
<import resource="/config/allbean/spring-bean-bbs.xml" />
<!--配置文件的引用 end -->
<!-- 异常拦截器类 -->
<bean id="exceptionInterceptor" class="com.zzf.web.module.bbs.Interceptor.ExceptionInterceptor">
<property name="errorInfoService" ref="errorInfoService"/>
</bean>
</beans>