Spring中的事物管理,基于spring的bean的配置

很多东西与上边的相同,这儿只简介;

导包。。。

数据库中建立三个表。。。

建立存放连接数据库的file文件:jdbc.properties;

-----------------------------------------------------------------

com.atguigu.spring.tx.xml包下建立,

接口:BookShopDao

类:BookShopDaoImpl 继承于接口,BookShopDao

异常处理类:BookStockException

测试类:JUnitTest

-----------------------------------------------------------------

com.atguigu.spring.tx.xml.service包下建立:在配置事物切点的时候便于识别<aop:pointcut expression="execution(* com.atguigu.spring.tx.xml.service.*.*(..))"  id="txPointCut"/>

接口:BookShopService

接口:Cashier

-------------------------------------------------------------------

com.atguigu.spring.tx.xml.service.impl包下建立:

类:BookShopServiceImpl,继承于接口 BookShopService

类:CashierImpl,继承于接口 Cashier

------------------------------------------------------------------

spring的xml文件中的bean配置

<?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:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

    <!-- 导入资源文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置c3p0数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>

        <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    </bean>

    <!-- 配置spring 的 JdbcTemplate ,里面有一些jdbc的方法,实现对数据库数据的增删改查-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 配置bean,可以识别它的属性和它的set方法 -->
    <bean id="bookShopDao" class="com.atguigu.spring.tx.xml.BookShopDaoImpl">
        <property name="jdbcTemplae" ref="jdbcTemplate"></property>
    </bean>

    <bean id="bookShopService" class="com.atguigu.spring.tx.xml.service.impl.BookShopServiceImpl">
        <property name="bookShopDao" ref="bookShopDao"></property>
    </bean>

    <bean id="cashier" class="com.atguigu.spring.tx.xml.service.impl.CashierImpl">
        <property name="bookShopService" ref="bookShopService"></property>
    </bean>

    <!-- 1.配置事物管理器 -->
    <bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 2.配置事物属性 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
        <!-- 根据方法名指定事物的属性 -->
            <tx:method name="purchase" propagation="REQUIRES_NEW"/>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

    <!-- 3.配置事物切入点,以及把事物切入点和事物的属性关联起来,
    * com.atguigu.spring.tx.xml.service.*.*(..)指扫描在这个包下继承这些接口的类的接口-->
    <aop:config>
        <aop:pointcut expression="execution(* com.atguigu.spring.tx.xml.service.*.*(..))"
        id="txPointCut"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    </aop:config>
</beans>
时间: 2024-10-12 08:08:03

Spring中的事物管理,基于spring的bean的配置的相关文章

Spring中的事物管理----HelloWorld

在学习Spring的事物管理之前明白先明白几个概念1什么是事物:事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 例子说明:例如银行转账,A账户转账(转200)到B账户,涉及的动作就是A账户余额减少200,B账户余额增加200,把这两个动作当成一个工作单元,要么两个动作一起完成,要么两个动作都不起用 2事物作用是什么:有四大特性,分别是:原子性(就是多个动作组成一个原子操作,要么一起完成,要么一起不起作用)        一致性(就是事物完成后,数

Spring中的事物管理,用 @Transactional 注解声明式地管理事务

事物: 事务管理是企业级应用程序开发中必不可少的技术,  用来确保数据的 完整性和 一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四个关键属性: 原子性:事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用. 一致性:一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中. 隔离性:可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来,

Spring中的事物管理

1.前瞻: 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失.在 Spring 中,事务是通过 TransactionDefinition 接口来定义的.该接口包含与事务属性有关的方法. 2.事务隔离级别隔离级别

Spring中IoC - 两种ApplicationContext加载Bean的配置

说明:Spring IoC其实就是在Service的实现中定义了一些以来的策略类,这些策略类不是通过 初始化.Setter.工厂方法来确定的.而是通过一个叫做上下文的(ApplicationContext)组建来加载进来的.这里介绍两种Context组建的构件过程 前提条件:在Gradle工程的build.gradle文件中引入对Spring framework 的支持 repositories { mavenCentral() } dependencies { compile group: '

spring中的事物

spring中的事物 [1]事物的概念 事务的概念:事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败. [2]事务的特性 原子性(Atomicity):当事务结束,它对所有资源状态的改变都被视为一个操作,这些操作要不同时成功,要不同时失败:一致性(Consistency):操作完成后,所有数据必须符合业务规则,否则事务必须中止:隔离性(Isolation):事务以相互隔离的方式执行,事务以外的实体无法知道事务过程中的中间状态:持久性(Durable):事务提交后,数据必须以一种持久

Spring AOP报错处理 Can not set field to $Proxy 在spring中使用事物或AOP遇到的错误

[转] 解决方法: http://forum.springsource.org/showthread.php?85016-IllegalArgumentException-with-ApplicationContextAware-Proxy 在配置文件中加入proxy-target-class="true" <tx:annotation-driven transaction-manager="transactionManager" proxy-target-c

Spring中的事务管理

一.Spring事务管理用到的三个接口 a. PlatformTransactionManager 事务管理器 b. TransactionDefinition 事务定义信息(隔离.传播.超时.只读) c. TransactionStatus 事务具体的运行状态 二.Spring为不同的持久化框架提供了不同的PlatformTransactionManager接口实现 事务 说明 org.springframework.jdbc.datasource.DataSourceTransactionM

Spring内置事物管理器

DataSourceTransactionManager:位于org.springframework.jdbc.datasource包中,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架.iBATIS或MyBatis框架的事务管理. 仅以此配置为例,其他管理器配置类似 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTrans

Spring整合hibernate+事物管理

* Spring hibernate 事务的流程 * 1. 在方法开始之前 * ①. 获取 Session * ②. 把 Session 和当前线程绑定, 这样就可以在 Dao 中使用 SessionFactory 的 * getCurrentSession() 方法来获取 Session 了 * ③. 开启事务 * * 2. 若方法正常结束, 即没有出现异常, 则 * ①. 提交事务 * ②. 使和当前线程绑定的 Session 解除绑定 * ③. 关闭 Session * * 3. 若方法出