JAVA Spring学习笔记------Spring事务

事务在我看来,就是保证一个方法能够保持原子性

例如我们有一个方法,需要操作数据库,例如银行的转账操作,

需要对一个账号加同时对另一个账户减

如果不能保证原子性

那么就会造成只增不减的情况

这个时候需要用到事务来管理

如何完成对数据库操作的事务管理

首先需要将业务层接口的方法声明为事务

利用@Transactional 来声明

public interface UserService {
    @Transactional
    public List<User> getAll();
}

其次要在连接数据库的类中加入一个事务Bean

 1 public class JdbcConfig {
 2     //首先我们定义一个方法来获得要管理的对象
 3     //然后我们通过@Bean来表示当前方法是的返回值是一个Bean
 4     @Bean
 5     public DataSource getDataSource(){
 6         DruidDataSource dataSource = new DruidDataSource();
 7         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
 8         dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mp? useUnicode=true&amp;"+
 9                 "characterEncoding=utf8&amp;autoReconnect=true&amp;" +
10                 "allowMultiQuerie s=true&amp; useSSL=false");
11         dataSource.setUsername("root");
12         dataSource.setPassword("root");
13         return dataSource;
14     }
15 
16     @Bean
17     public PlatformTransactionManager platformTransactionManager(DataSource dataSource){
18         DataSourceTransactionManager transactionManager =
19                 new DataSourceTransactionManager(dataSource);
20         return transactionManager;
21 
22     }
23 
24 }

最后需要在Spring配置类中说明开启了事务注释

@Configuration
@ComponentScan("com.demo")
@Import({JdbcConfig.class, MybatisConfig.class})
//有注解开发的AOP
//@EnableAspectJAutoProxy
@EnableAspectJAutoProxy(proxyTargetClass = true)
@EnableTransactionManagement
public class SpringConfig {
}

 

posted @ 2022-10-05 15:32  zzRh_5479  阅读(28)  评论(0编辑  收藏  举报