祝各位道友念头通达
GitHub Gitee 语雀 打赏

Spring的事务管理-相关配置

管理:

事务就是一系列的动作,它们被当作一个单独的工作单元。这些动作要么全部完成,要么全部不起作用

 

Spring事务管理

Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JTA或其他持久化机制所提供的平台相关的事务实现。每个事务管理器都会充当某一特定平台的事务实现的门面,这使得用户在Spring中使用事务时,几乎不用关注实际的事务实现是什么。

 

Spring基于注解的xml的配置:

  1. 包扫描
  2. 动态管理类
  3. 数据源
  4. jdbcTemplate的配置
  5. 声明事务类
  6. 启动事物管理

 代码:

<context:component-scan base-package="com.zhiyou.han"></context:component-scan>

 

<aop:config proxy-target-class="true"></aop:config>

 

<!-- 数据源的配置-->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="user" value="root"></property>

<property name="password" value="199617"></property>

<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/product"></property>

<property name="driverClass" value="com.mysql.jdbc.Driver"></property>

<property name="initialPoolSize" value="3"></property> <!-- 初始化时常量的个数 -->

<property name="maxPoolSize" value="9"></property> <!-- 增大的最大的常量个数 -->

<property name="minPoolSize" value="2"></property>  <!-- 当常量池的个数销毁,但是最终保留2个便不在销毁  -->

<property name="acquireIncrement" value="2"></property> <!-- 当常量池个数不够用的时候,每次增加2个,最大不超过MaxPoolSize -->

<property name="maxIdleTime" value="5000"></property> <!-- 每个常量池空闲5秒没有被使用被销毁-->

</bean>

 

<!-- jdbcTemplate的配置 -->

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

<property name="dataSource" ref="dataSource"></property>

</bean>

 

<!-- 声明事务类 -->

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource"></property>

</bean>

 

<!-- 启动事物管理 -->

<tx:annotation-driven transaction-manager="transactionManager"/>

Java代码

(service层的方法或是类前边加注解 @Transactional )

 

 

 

基于xml配置:

只需要将第六个步骤,事务管理启动变为如下代码

<!-- 基于xml配置事务管理 -->

<tx:advice id="adivce" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="query*" read-only="true"/>

<tx:method name="*"/>

</tx:attributes>

</tx:advice>

<aop:config>

<aop:pointcut expression="execution(* com.zhiyou.han.service.*.*(..))" id="pointcut"/>

<aop:advisor advice-ref="adivce" pointcut-ref="pointcut"/>

</aop:config>

 

posted @ 2018-10-10 21:00  韩若明瞳  阅读(192)  评论(0编辑  收藏  举报