日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

spring-声明式事务管理

發(fā)布時(shí)間:2025/3/20 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring-声明式事务管理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、創(chuàng)建spring項(xiàng)目
?? ?項(xiàng)目名稱:spring101311
二、在項(xiàng)目上添加jar包
?? ?1.在項(xiàng)目中創(chuàng)建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
三、在項(xiàng)目中添加配置文件與屬性文件
?? ?1.在項(xiàng)目中創(chuàng)建conf目錄
?? ?2.在conf目錄下添加屬性文件
?? ??? ?屬性文件名稱:jdbc.properties
?? ??? ?屬性文件內(nèi)容:
?? ??? ?jdbc.url=jdbc:mysql://localhost:3306/spring
?? ??? ?jdbc.driver=com.mysql.jdbc.Driver
?? ??? ?jdbc.username=root
?? ??? ?jdbc.password=root
?? ?2.在conf目錄下添加spring核心配置文件
?? ??? ?配置文件名稱:applicationContext.xml
?? ??? ?配置文件內(nèi)容:
?? ??? ?<?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.配置數(shù)據(jù)庫(kù)連接池 -->
?? ??? ??? ??? ?<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>
四、實(shí)現(xiàn)bean設(shè)計(jì)
?? ?1.在src目錄下創(chuàng)建實(shí)體bean的包
?? ??? ?包名:cn.jbit.spring101310.domain
?? ?2.在包下創(chuàng)建實(shí)體bean
?? ??? ?public class Account {
?? ??? ??? ?private Integer id;
?? ??? ??? ?private String name;
?? ??? ??? ?private Double money;
?? ??? ??? ?//省略get and set
?? ??? ?}
五、設(shè)計(jì)Dao層
?? ?1.在src目錄下創(chuàng)建dao層的包
?? ??? ?包名:cn.jbit.spring101310.dao
?? ?2.在包下創(chuàng)建dao層的接口與實(shí)現(xiàn)類
?? ??? ?1)接口設(shè)計(jì)
?? ??? ??? ?接口名稱:IAccountDao.java
?? ??? ??? ?接口內(nèi)容:
?? ??? ??? ?public interface IAccountDao {
?? ??? ??? ??? ?/**
?? ??? ??? ??? ? * 轉(zhuǎn)出
?? ??? ??? ??? ? */
?? ??? ??? ??? ?public void outMoney(Account outaccount);
?? ??? ??? ??? ?/**
?? ??? ??? ??? ? * 轉(zhuǎn)入
?? ??? ??? ??? ? */
?? ??? ??? ??? ?public void inMoney(Account inaccount);
?? ??? ??? ?}
?? ??? ?2)接口實(shí)現(xiàn)類設(shè)計(jì)
?? ??? ??? ?實(shí)現(xiàn)類名稱:AccountDaoImpl.java
?? ??? ??? ?實(shí)現(xiàn)類內(nèi)容:
?? ??? ??? ?public class AccountDaoImpl extends JdbcDaoSupport implements IAccountDao {
?? ??? ??? ??? ?/**
?? ??? ??? ??? ? * 轉(zhuǎn)入
?? ??? ??? ??? ? */
?? ??? ??? ??? ?@Override
?? ??? ??? ??? ?public void inMoney(Account inaccount) {
?? ??? ??? ??? ??? ?String sql = "update account set money = money + ? where id = ?";
?? ??? ??? ??? ??? ?this.getJdbcTemplate().update(sql,inaccount.getMoney(),inaccount.getId());
?? ??? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ??? ?/**
?? ??? ??? ??? ? * 轉(zhuǎn)出
?? ??? ??? ??? ? */
?? ??? ??? ??? ?@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>

七、在核心配置文件中配置事務(wù)相關(guān)信息
?? ?<!-- 4.配置事務(wù)管理器 -->
?? ?<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
?? ??? ?<property name="dataSource" ref="dataSource"></property>
?? ?</bean>
八、業(yè)務(wù)層設(shè)計(jì)
?? ?1.在src目錄下創(chuàng)建業(yè)務(wù)層的包
?? ??? ?包名:cn.jbit.spring101310.service
?? ?2.在包下創(chuàng)建業(yè)務(wù)層的接口與實(shí)現(xiàn)類
?? ??? ?1)接口設(shè)計(jì)
?? ??? ??? ?接口名稱:AccountService.java
?? ??? ??? ?接口內(nèi)容:
?? ??? ??? ?public interface AccountService {
?? ??? ??? ??? ?public void transfer(Account outAccount,Account inAccount);
?? ??? ??? ?}
?? ??? ?2)接口實(shí)現(xiàn)類設(shè)計(jì)
?? ??? ??? ?實(shí)現(xiàn)類名稱:AccountServiceImpl.java
?? ??? ??? ?實(shí)現(xiàn)類內(nèi)容:
?? ??? ??? ?public class AccountServiceImpl implements AccountService {
?? ??? ??? ?
?? ??? ??? ??? ?private IAccountDao accountDao;
?? ??? ??? ??? ?@Override
?? ??? ??? ??? ?public void transfer(final Account outAccount, final Account inAccount) {
?? ??? ??? ??? ??? ?//轉(zhuǎn)出
?? ??? ??? ??? ??? ?accountDao.outMoney(outAccount);
?? ??? ??? ??? ??? ?int a = 1/0;
?? ??? ??? ??? ??? ?//轉(zhuǎn)入
?? ??? ??? ??? ??? ?accountDao.inMoney(inAccount);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?//省略get and set
?? ??? ??? ?}
九、在核心配置文件中配置業(yè)務(wù)層
?? ?<!-- 5.配置Service -->
?? ?<bean id="accountService" class="cn.jbit.spring101310.service.AccountServiceImpl">
?? ??? ?<property name="accountDao" ref="accountDao"></property>
?? ?</bean>
十、在核心配置文件中配置代理
?? ?<!-- 6.創(chuàng)建代理 -->
?? ?<bean id="accountServiceproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
?? ??? ?<!--
?? ??? ??? ?引用事務(wù)管理器
?? ??? ? -->
?? ??? ?<property name="transactionManager" ref="transactionManager"></property>
?? ??? ?<!--
?? ??? ??? ?為哪個(gè)類創(chuàng)建代理
?? ??? ? -->
?? ??? ?<property name="target" ref="accountService"></property>
?? ??? ?<property name="transactionAttributes">
?? ??? ??? ?<props>
?? ??? ??? ??? ?<!--
?? ??? ??? ??? ??? ?*:所有方法
?? ??? ??? ??? ??? ?PROPAGATION_REQUIRED:默認(rèn)的事務(wù)傳播行為
?? ??? ??? ??? ? -->
?? ??? ??? ??? ?<prop key="*">PROPAGATION_REQUIRED</prop>
?? ??? ??? ?</props>
?? ??? ?</property>
?? ?</bean>
十一、測(cè)試
?? ?1.在項(xiàng)目上創(chuàng)建test目錄
?? ??? ?/test
?? ?2.在test目錄下創(chuàng)建測(cè)試包
?? ??? ?包名:cn.jbit.spring101310.service
?? ?3.在測(cè)試包下創(chuàng)建測(cè)試類
?? ??? ?測(cè)試類名:AccountServiceTest.java
?? ??? ?測(cè)試類的內(nèi)容:
?? ??? ?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);
?? ??? ??? ?}
?? ??? ?}

轉(zhuǎn)載于:https://blog.51cto.com/suyanzhu/1563387

總結(jié)

以上是生活随笔為你收集整理的spring-声明式事务管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。