任何接口,如果只包含一个抽象方法,它就是一个函数式接口。对于函数式接口,可以通过Lambda表达式来创建该接口的对象
Runnable就是一个函数式接口。
- 新建一个函数式接口,并在抽象方法上加上
@Transactional
的事务注解。
- 在实际业务逻辑中需要事务的地方,通过Lambda表达式创建该接口的对象(必须实现唯一的抽象方法)。
- 执行该接口对象的方法,即将方法内的逻辑以事务的形式去执行。
spring事务的依赖:
1 2 3 4
| <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class Test { public void testTransaction() { int a = 0; int b = 1;
TransactionConsumer transactionConsumer = () -> { insertDataA(a); updateDataB(b); }; transactionConsumer.doInTransaction(); }
private void updateDataB(int b) { }
private void insertDataA(int a) { } }
@FunctionalInterface public interface TransactionConsumer { @Transactional void doInTransaction(); }
|