• 2024-6-19(沉默springboot)


    1.spring开启事务支持

    事务在逻辑上是一组操作,要么执行,要不都不执行。主要是针对数据库而言的,比如说 MySQL。

    业务场景eg:

    1. public void savePosts(PostsParam postsParam) {
    2. // 保存文章
    3. save(posts);
    4. // 处理标签
    5. insertOrUpdateTag(postsParam, posts);
    6. }

    Spring 支持两种事务方式,分别是编程式事务和声明式事务,后者最常见,通常情况下只需要一个 @Transactional 就搞定了(代码侵入性降到了最低),如下:

    1. @Transactional
    2. public void savePosts(PostsParam postsParam) {
    3. // 保存文章
    4. save(posts);
    5. // 处理标签
    6. insertOrUpdateTag(postsParam, posts);
    7. }

    (编程式事务是指将事务管理代码嵌入嵌入到业务代码中,来控制事务的提交和回滚。),比如说,使用 TransactionTemplate 来管理事务:

    1. @Autowired
    2. private TransactionTemplate transactionTemplate;
    3. public void testTransaction() {
    4. transactionTemplate.execute(new TransactionCallbackWithoutResult() {
    5. @Override
    6. protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
    7. try {
    8. // .... 业务代码
    9. } catch (Exception e){
    10. //回滚
    11. transactionStatus.setRollbackOnly();
    12. }
    13. }
    14. });
    15. }

    在编程式事务中,必须在每个业务操作中包含额外的事务管理代码,就导致代码看起来非常的臃肿,但对理解 Spring 的事务管理模型非常有帮助。 

    声明式事务

    声明式事务将事务管理代码从业务方法中抽离了出来,以声明式的方式来实现事务管理,对于开发者来说,声明式事务显然比编程式事务更易用、更好用。

    当然了,要想实现事务管理和业务代码的抽离,就必须得用到 Spring 当中最关键最核心的技术之一:AOP,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,执行完目标方法之后根据执行的情况提交或者回滚

    编程式事务比声明式事务控制的颗粒度更细。

    声明式事务有许多属性,例如事物的传播行为、隔离级别、超时时间等等都支持自定义@Transactional(xxxxxxxxxx)

    2.springboot中的事务

    前面的Spring中既支持编程式事务,也支持声明式事务(@Transactional),在springboot中,就直接用@Transactional声明式事务吧。

    @Transactional的作用范围:

    • 类上,表明类中所有 public 方法都启用事务
    • 方法上,最常用的一种
    • 接口上,不推荐使用

    @Transactional注解提供了许多属性供我们自定义,但大多数情况下用默认的就好了。

    3.过滤器,拦截器,监听器

    先说作用:

    • 过滤器(Filter):当有一堆请求,只希望符合预期的请求进来。
    • 拦截器(Interceptor):想要干涉预期的请求。
    • 监听器(Listener):想要监听这些请求具体做了什么。

    再说区别

    过滤器是在请求进入容器后,但是还没有进入Servlet之前工作的。

    拦截器是在请求进入控制器(Controller) 之前进行工作的。过滤器可以有很多个,一个个过滤器组合起来就成了 FilterChain,也就是过滤器链。例如登录校验可以通过Interceptor来实现。

    监听器用于监听 Web 应用中某些对象的创建、销毁、增加、修改、删除等动作,然后做出相应的处理的。

    @Configuration用于取代xml作为配置文件的作用。

    过滤器和拦截器都是AOP思想的实现。

    4.springboot整合redis(key/value数据库)

    redis支持的数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

  • 相关阅读:
    MATLAB-自动批量读取文件,并按文件名称或时间顺序进行数据处理
    C++ Qt/Eigen拟合三维平面与三维圆
    Nginx + Tomcat 搭建负载均衡、动态分离
    Spring Cloud Sleuth 整合 Zipkin 进行服务链路追踪
    仿热血江湖游戏类43
    python父类子类的继承和覆写的区别以及通过代码进行讲解
    1-Maven-settings配置
    前端将图片储存table表格中,页面回显
    ISR实现RDN图像增强
    迈巴赫S480升级主动式氛围灯 彰显内饰的浪漫婉转气息
  • 原文地址:https://blog.csdn.net/weixin_44847812/article/details/139802858