网站模板源代码下载,手机开发和网站开发前景,网站注册完域名如何建站,国内跨境电商网站代码世界聚眸光#xff0c;昼夜敲盘思绪长。 算法心间精构建#xff0c;编程路上细思量。 屏前架构乾坤定#xff0c;键上飞驰智慧扬。 默默耕耘成果现#xff0c;创新科技铸辉煌。 目录 一#xff0c;概念 二#xff0c;Spring事务管理 三#xff0c;rollbackFor事务回… 代码世界聚眸光昼夜敲盘思绪长。 算法心间精构建编程路上细思量。 屏前架构乾坤定键上飞驰智慧扬。 默默耕耘成果现创新科技铸辉煌。 目录 一概念 二Spring事务管理 三rollbackFor事务回滚 四propagation传播行为 一概念 二Spring事务管理
下面我们举一个小例子来演示一下
首先创建一个Service的接口
public interface IYZService {/*** 处理用户信息* */User dealUser(String name);/*** 测试* */User testUser(String name);
}
然后实现Service接口
Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZService implements IYZService {Autowired //运行时IOC容器会提供该类型的bean对象并赋值给该变量 这就是依赖注入private YZDao yzDao;Overridepublic User dealUser(String name) {User user yzDao.findUserByName(name);Address address new Address();address.setCity(淄博);address.setProvince(山东);user.setAddress(address);return user;}Overridepublic User testUser(String name) {User user yzDao.findUserByName(name);Address address new Address();address.setCity(淄博1);address.setProvince(山东1);user.setAddress(address);return user;}
}
Dao的接口和类
public interface IYZDao {/** 根据用户姓名查找用户信息* **/User findUserByName(String name);
}
Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZDao implements IYZDao {Overridepublic User findUserByName(String name) {User user new User();user.setName(name);user.setAge(20);Address address new Address();address.setProvince(北京);address.setCity(北京);user.setAddress(address);return user ;}
}
Controller层代码
RestController
public class RequestController {Resource(name YZService)private IYZService yzService;RequestMapping(/yzTestPath/{name})public Result yzTestPath(PathVariable String name){User user yzService.dealUser(name);User user2 yzService.testUser(name);ListUser list new ArrayListUser();list.add(user);list.add(user2);return Result.success(list);}
}
测试 下面我们先定义一个全局的异常处理器GlobalExceptionHandler
/*** 全局异常管理器* */
RestControllerAdvice
public class GlobalExceptionHandler {ExceptionHandler(Exception.class)public Result exception(Exception e) {e.printStackTrace();return Result.error(对不起操作失败请联系管理员);}
} 接下来我们模拟一个异常
RestController
public class RequestController {Resource(name YZService)private IYZService yzService;RequestMapping(/yzTestPath/{name})public Result yzTestPath(PathVariable String name){User user yzService.dealUser(name);//抛出异常int i 1/0;User user2 yzService.testUser(name);ListUser list new ArrayListUser();list.add(user);list.add(user2);return Result.success(list);}
} 接着我们请求接口 然后看控制台 错误的堆栈信息也打印出来了。
接下来我们继续将事务管理这里需要用到Transactional这个注解 这个注解一般是作用在业务层的曾删改这一层上面的
三rollbackFor事务回滚 那么我们如果要指定在所有异常情况下都回滚呢
Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZDao implements IYZDao {Transactional(rollbackFor Exception.class)Overridepublic User findUserByName(String name) {User user 数据库操作return user ;}
}
四propagation传播行为 常见的传播行为 Component //将当前容器交给IOC容器管理 成为IOC容器中的bean
public class YZDao implements IYZDao {Transactional(rollbackFor Exception.class,propagation Propagation.REQUIRED)Overridepublic User findUserByName(String name) {User user new User();user.setName(name);user.setAge(20);Address address new Address();address.setProvince(北京);address.setCity(北京);user.setAddress(address);test();return user ;}Transactional(rollbackFor Exception.class,propagation Propagation.REQUIRES_NEW)public void test(){}
}