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 { }