spring支持的事务
 似乎都是关于数据库的,可能也是我的水平问题,不知道其他的东西
 大概需要实现两个,一个commit,另一个是rollback
 事务是基于AOP实现的
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 
 | <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 
 <groupId>org.example</groupId>
 <artifactId>springTransaction</artifactId>
 <version>1.0-SNAPSHOT</version>
 
 
 <dependencies>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>5.2.4.RELEASE</version>
 </dependency>
 
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-tx</artifactId>
 <version>5.2.4.RELEASE</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
 <version>5.2.4.RELEASE</version>
 </dependency>
 
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-test</artifactId>
 <version>5.2.4.RELEASE</version>
 </dependency>
 
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.6</version>
 </dependency>
 
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 </dependency>
 
 
 <dependency>
 <groupId>org.aspectj</groupId>
 <artifactId>aspectjweaver</artifactId>
 <version>1.8.13</version>
 </dependency>
 
 
 </dependencies>
 </project>
 
 | 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 
 | package com.wsx.spring.Service;
 import com.wsx.spring.Account;
 import com.wsx.spring.Dao.IAccountDao;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
 @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
 public class AccountService implements IAccountService {
 @Autowired
 private IAccountDao accountDao;
 
 public Account findAccountById(Integer accountId) {
 return accountDao.findAccountById(accountId);
 }
 
 
 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
 public void transfer(String sourceName, String targetName, Float money) {
 System.out.println("start transfer");
 
 Account source = accountDao.findAccountByName(sourceName);
 
 Account target = accountDao.findAccountByName(targetName);
 
 source.setMoney(source.getMoney() - money);
 
 target.setMoney(target.getMoney() + money);
 
 accountDao.updateAccount(source);
 
 int i = 1 / 0;
 
 
 accountDao.updateAccount(target);
 }
 }
 
 |