Spring AOP事务管理的示例详解

网友投稿 326 2022-07-22


目录转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:创建JdbcConfig配置类步骤8:创建MybatisConfig配置类步骤9:创建SpringConfig配置类步骤10:编写测试类事务管理

转账案例-环境搭建

步骤1:准备数据库表

之前我们在整合Mybatis的时候已经创建了这个表,可以直接使用

create database spring_db character set utf8;

use spring_db;

create table tbl_account(

id int primary key auto_increment,

name varchar(35),

money double

);

insert into tbl_account values(1,'Tom',1000);

insert into tbl_account values(2,'Jerry',1000);

步骤2:创建项目导入jar包

项目的pom.xml添加相关依赖

org.springframework

spring-context

5.2.10.RELEASE

com.alibaba

druid

1.1.16

org.mybatis

mybatis

3.5.6

mysql

mysql-connector-java

5.1.47

org.springframework

spring-jdbc

5.2.10.RELEASE

oeWUZcZIflyrg.mybatis

mybatis-spring

1.3.0

junit

junit

4.12

test

org.springframework

spring-test

5.2.10.RELEASE

步骤3:根据表创建模型类

public class Account implements Serializable {

private Integer id;

private String name;

private Double mhttp://oney;

//setter...getter...toString...方法略

}

步骤4:创建Dao接口

public interface AccountDao {

@Update("update tbl_account set money = money + #{money} where name = #{name}")

void inMoney(@Param("name") String name, @Param("money") Double money);

@Update("update tbl_account set money = money - #{money} where name = #{name}")

void outMoney(@Param("name") String name, @Param("money") Double money);

}

步骤5:创建Service接口和实现类

public interface AccountService {

/**

* 转账操作

* @param out 传出方

* @param in 转入方

* @param money 金额

*/

public void transfer(String out,String in ,Double money) ;

}

@Service

public class AccountServiceImpl implements AccountService {

@Autowired

private AccountDao accountDao;

public void transfer(String out,String in ,Double money) {

accountDao.outMoney(out,money);

accountDao.inMoney(in,money);

}

}

步骤6:添加jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false

jdbc.username=root

jdbc.password=root

步骤7:创建JdbcConfig配置类

public class JdbcConfig {

@Value("${jdbc.driver}")

private String driver;

@Value("${jdbc.url}")

private String url;

@Value("${jdbc.username}")

private String userName;

@Value("${jdbc.password}")

private String password;

@Bean

public DataSource dataSource(){

DruidDataSource ds = new DruidDataSource();

ds.setDriverClassName(driver);

ds.setUrl(url);

ds.setUsername(userName);

ds.setPassword(password);

return ds;

}

}

步骤8:创建MybatisConfig配置类

public class MybatisConfig {

@Bean

public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){

SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();

ssfb.setTypeAliasesPackage("com.itheima.domain");

ssfb.setDataSource(dataSource);

return ssfb;

}

@Bean

public MapperScannerConfigurer mapperScannerConfigurer(){

MapperScannerConfigurer msc = new MapperScannerConfigurer();

msc.setBasePackage("com.itheima.dao");

return msc;

}

}

步骤9:创建SpringConfig配置类

@Configuration

@ComponentScan("com.itheima")

@PropertySource("classpath:jdbc.properties")

@Import({JdbcConfig.class,MybatisConfig.class})

public class SpringConfig {

}

步骤10:编写测试类

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(classes = SpringConfig.class)

public class AccountServiceTest {

@Autowired

private AccountService accountService;

@Test

public void testTransfer() throws IOException {

accountService.transfer("Tom","Jerry",100D);

}

}

事务管理

上述环境,运行单元测试类,会执行转账操作,Tom的账户会减少100,Jerry的账户会加100。

这是正常情况下的运行结果,但是如果在转账的过程中出现了异常,如:

@Service

public class AccountServiceImpl implements AccountService {

@Autowired

private AccountDao accountDao;

public void transfer(String out,String in ,Double money) {

accountDao.outMoney(out,money);

int i = 1/0;

accountDao.inMoney(in,money);

}

}

以上就是Spring AOP事务管理的示例详解的详细内容,更多关于Spring AOP事务管理的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何配置feign全局log
下一篇:Spring Security登录表单配置示例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~