欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 2024-6-19(沉默springboot)

2024-6-19(沉默springboot)

2024/10/24 9:28:24 来源:https://blog.csdn.net/weixin_44847812/article/details/139802858  浏览:    关键词:2024-6-19(沉默springboot)

1.spring开启事务支持

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

业务场景eg:

public void savePosts(PostsParam postsParam) {// 保存文章save(posts);// 处理标签insertOrUpdateTag(postsParam, posts);
}

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

@Transactional
public void savePosts(PostsParam postsParam) {// 保存文章save(posts);// 处理标签insertOrUpdateTag(postsParam, posts);
}

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

@Autowired
private TransactionTemplate transactionTemplate;
public void testTransaction() {transactionTemplate.execute(new TransactionCallbackWithoutResult() {@Overrideprotected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {try {// ....  业务代码} catch (Exception e){//回滚transactionStatus.setRollbackOnly();}}});
}

在编程式事务中,必须在每个业务操作中包含额外的事务管理代码,就导致代码看起来非常的臃肿,但对理解 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:有序集合)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com