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&"+ 9 "characterEncoding=utf8&autoReconnect=true&" + 10 "allowMultiQuerie s=true& 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 { }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)