博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-声明式事务管理
阅读量:5789 次
发布时间:2019-06-18

本文共 4906 字,大约阅读时间需要 16 分钟。

一、创建spring项目

    项目名称:spring101311

二、在项目上添加jar包

    1.在项目中创建lib目录

        /lib

    2.在lib目录下添加spring支持

        com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

        com.springsource.org.aopalliance-1.0.0.jar

        com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

        commons-logging.jar

        junit-4.10.jar

        log4j.jar

        mysql-connector-java-5.1.18-bin.jar

        spring-aop-3.2.0.RELEASE.jar

        spring-aspects-3.2.0.RELEASE.jar

        spring-beans-3.2.0.RELEASE.jar

        spring-context-3.2.0.RELEASE.jar

        spring-core-3.2.0.RELEASE.jar

        spring-expression-3.2.0.RELEASE.jar

        spring-jdbc-3.2.0.RELEASE.jar

        spring-tx-3.2.0.RELEASE.jar

三、在项目中添加配置文件与属性文件

    1.在项目中创建conf目录

    2.在conf目录下添加属性文件

        属性文件名称:jdbc.properties

        属性文件内容:

        jdbc.url=jdbc:mysql://localhost:3306/spring

        jdbc.driver=com.mysql.jdbc.Driver

        jdbc.username=root

        jdbc.password=root

    2.在conf目录下添加spring核心配置文件

        配置文件名称:applicationContext.xml

        配置文件内容:

        <?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"

                       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.xsd">

                

                <!-- 1.加载属性文件 -->

                <context:property-placeholder location="classpath:jdbc.properties"/>

                

                <!-- 2.配置数据库连接池 -->

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

                    <property name="jdbcUrl" value="${jdbc.url}"></property>

                    <property name="driverClass" value="${jdbc.driver}"></property>

                    <property name="user" value="${jdbc.username}"></property>

                    <property name="password" value="${jdbc.password}"></property>

                </bean>

        </beans>

四、实现bean设计

    1.在src目录下创建实体bean的包

        包名:cn.jbit.spring101310.domain

    2.在包下创建实体bean

        public class Account {

            private Integer id;

            private String name;

            private Double money;

            //省略get and set

        }

五、设计Dao层

    1.在src目录下创建dao层的包

        包名:cn.jbit.spring101310.dao

    2.在包下创建dao层的接口与实现类

        1)接口设计

            接口名称:IAccountDao.java

            接口内容:

            public interface IAccountDao {

                /**

                 * 转出

                 */

                public void outMoney(Account outaccount);

                /**

                 * 转入

                 */

                public void inMoney(Account inaccount);

            }

        2)接口实现类设计

            实现类名称:AccountDaoImpl.java

            实现类内容:

            public class AccountDaoImpl extends JdbcDaoSupport implements IAccountDao {

                /**

                 * 转入

                 */

                @Override

                public void inMoney(Account inaccount) {

                    String sql = "update account set money = money + ? where id = ?";

                    this.getJdbcTemplate().update(sql,inaccount.getMoney(),inaccount.getId());

                }

            

                /**

                 * 转出

                 */

                @Override

                public void outMoney(Account outaccount) {

                    String sql = "update account set money = money - ? where id = ?";

                    this.getJdbcTemplate().update(sql,outaccount.getMoney(),outaccount.getId());        

                }

            }

六、在核心配置文件中配置Dao

    <!-- 3.配置Dao -->

    <bean id="accountDao" class="cn.jbit.spring101310.dao.AccountDaoImpl">

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

    </bean>


七、在核心配置文件中配置事务相关信息

    <!-- 4.配置事务管理器 -->

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

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

    </bean>

八、业务层设计

    1.在src目录下创建业务层的包

        包名:cn.jbit.spring101310.service

    2.在包下创建业务层的接口与实现类

        1)接口设计

            接口名称:AccountService.java

            接口内容:

            public interface AccountService {

                public void transfer(Account outAccount,Account inAccount);

            }

        2)接口实现类设计

            实现类名称:AccountServiceImpl.java

            实现类内容:

            public class AccountServiceImpl implements AccountService {

            

                private IAccountDao accountDao;

                @Override

                public void transfer(final Account outAccount, final Account inAccount) {

                    //转出

                    accountDao.outMoney(outAccount);

                    int a = 1/0;

                    //转入

                    accountDao.inMoney(inAccount);

                }

                //省略get and set

            }

九、在核心配置文件中配置业务层

    <!-- 5.配置Service -->

    <bean id="accountService" class="cn.jbit.spring101310.service.AccountServiceImpl">

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

    </bean>

十、在核心配置文件中配置代理

    <!-- 6.创建代理 -->

    <bean id="accountServiceproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

        <!--

            引用事务管理器 

         -->

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

        <!--

            为哪个类创建代理 

         -->

        <property name="target" ref="accountService"></property>

        <property name="transactionAttributes">

            <props>

                <!--

                    *:所有方法

                    PROPAGATION_REQUIRED:默认的事务传播行为

                 -->

                <prop key="*">PROPAGATION_REQUIRED</prop>

            </props>

        </property>

    </bean>

十一、测试

    1.在项目上创建test目录

        /test

    2.在test目录下创建测试包

        包名:cn.jbit.spring101310.service

    3.在测试包下创建测试类

        测试类名:AccountServiceTest.java

        测试类的内容:

        public class AccountServiceTest {

            @Test

            public void testTranser(){

                ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");

                AccountService accountService = (AccountService) context.getBean("accountService");

                Account outAccount = new Account();

                outAccount.setId(1);

                outAccount.setMoney(500D);

                Account inAccount = new Account();

                inAccount.setId(2);

                inAccount.setMoney(500D);

                accountService.transfer(outAccount, inAccount);

            }

        }

本文转自  素颜猪  51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1563387

转载地址:http://mcqyx.baihongyu.com/

你可能感兴趣的文章
There is insufficient system memory to run this query 错误
查看>>
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
自定义View以及事件分发总结
查看>>
人生第一个过万 Star 的 GitHub 项目诞生
查看>>
Mac下配置多个SSH-Key (gitLab)
查看>>
Gradle之module间依赖版本同步
查看>>
一些kindle资源
查看>>
Node第一天
查看>>
页面搭建工具总结及扩展架构思考
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>
Linux—文件系统
查看>>
运用Loadrunner测试Mysql数据库性能
查看>>
Spring MVC EL表达式不能显示
查看>>
Tomcat version 5.5 only supports J2EE 1.2, 1.3, and 1.4 Web modules
查看>>
【致青春】我们挥霍时间的年代
查看>>
WDS系列之四:自定义安装映像
查看>>
CentOS7 NTP server + keepalived
查看>>