publicvoidinitUser1(User user){save(user);initPoint1(user.getId());}@TransactionalpublicvoidinitPoint1(Integer userId){UserPoint userPoint =newUserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);int i =5/0;}
@Testvoidtest1(){User user =newUser();user.setId(1);user.setName("1");userService.initUser1(user);}
1.2 捕获异常,不抛出
@TransactionalpublicvoidinitUser3(User user){save(user);initPoint3(user.getId());}publicvoidinitPoint3(Integer userId){UserPoint userPoint =newUserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);try{int i =5/0;}catch(Exception e){System.out.println("不抛出异常,事务不生效");}}
@Testvoidtest3(){User user =newUser();user.setId(3);user.setName("3");userService.initUser3(user);}
1.3 不带事务方法调带事务方法
publicvoidinitUser4(User user){save(user);initUser4_1(user);}@TransactionalpublicvoidinitUser4_1(User user){user.setId(user.getId()+1);save(user);int i =5/0;}
@Testvoidtest4(){User user =newUser();user.setId(4);user.setName("4");userService.initUser4(user);}
2.生效
2.1 带事务注解的方法调无事务注解的私有(公有)方法
@TransactionalpublicvoidinitUser2(User user){save(user);initPoint2(user.getId());}privatevoidinitPoint2(Integer userId){UserPoint userPoint =newUserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);int i =5/0;}
@Testvoidtest2(){User user =newUser();user.setId(2);user.setName("2");userService.initUser2(user);}
2.2 @Transactional写在类上,公有调用私有
@Service@TransactionalpublicclassUserService2extendsServiceImpl<UserMapper,User>{@AutowiredprivateUserPointService userPointService;publicvoidinitUser6(User user){save(user);initPoint6(user.getId());}privatevoidinitPoint6(Integer userId){UserPoint userPoint =newUserPoint();userPoint.setUserId(userId);userPoint.setPoint(0);userPointService.save(userPoint);int i =6/0;}}
@Testvoidtest6(){User user =newUser();user.setId(6);user.setName("6");userService2.initUser6(user);}
动态代理
代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。
比如,现在存在一个UserService类:
public class UserService {public void test() {System.out…
http://cplusoj.com/d/senior/p/SS231102C
首先可以通过枚举逆序对点的贡献推出无解情况为 n m o d 4 > 1 n \bmod 4 > 1 nmod4>1
然后构造可以按 n m o d 3 n\bmod 3 nmod3 进行分类
#include<bits/stdc.h>
using namespace std;
#ifdef LOCAL#define deb…