【spring-application.xml配置】
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 掃描文件(自動將所有層的類注入) -->
<context:component-scan base-package="com.asiainfo.maven_hibernate_test" />
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" 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}" />
<!-- 連接池最大使用連接數 -->
<property name="maxActive" value="20" />
<!-- 初始化連接大小 -->
<property name="initialSize" value="1" />
<!-- 獲取連接最大等待時間 -->
<property name="maxWait" value="60000" />
<!-- 連接池最大空閒 -->
<!-- <property name="maxIdle" value="10" /> -->
<!-- 連接池最小空閒 -->
<property name="minIdle" value="3" />
<!-- 自動清除無用連接 -->
<property name="removeAbandoned" value="true" />
<!-- 清除無用連接的等待時間 -->
<property name="removeAbandonedTimeout" value="180" />
<!-- 連接屬性 -->
<property name="connectionProperties" value="clientEncoding=UTF-8" />
</bean>
<!-- hibernate session factory 定義 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 主要針對domain -->
<property name="packagesToScan" value="com.asiainfo.maven_hibernate_test.domain" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
<!-- jdbcTemplate 定義 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事物管理器定義 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="dataSource" ref="dataSource" />
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 聲明式事物管理 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="do*" read-only="false" propagation="REQUIRED" />
<tx:method name="add*" read-only="false" propagation="REQUIRED" />
<tx:method name="save*" read-only="false" propagation="REQUIRED" />
<tx:method name="create*" read-only="false" propagation="REQUIRED" />
<tx:method name="update*" read-only="false" propagation="REQUIRED" />
<tx:method name="delete*" read-only="false" propagation="REQUIRED" />
<tx:method name="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<tx:annotation-driven transaction-manager="transactionManager" />
<aop:config proxy-target-class="true">
<aop:advisor advice-ref="txAdvice"
pointcut="execution(* com.asiainfo.maven_hibernate_test.service.impl.*ServiceImpl.*(..))" />
</aop:config>