Spring boot
文章平均质量分 85
大梦谁先觉i
悄悄努力,惊艳众人
展开
-
微服务鉴权的几种实现方案
刚开始接触微服务时网上给的方案大都数是通过透传Token做鉴权,但我认为这种方式不是很妥当。接着往下看:这种方式通过透传Token使得各微服务都能获取到当前登录人信息,在代码编写上确实可能会方便,但我认为这不是一种很好的设计方式。换句话说:B服务提供API时不因该关心当前是否为登录状态,登录状态应该由路由中的第一个服务校验维护,在调用后续服务时应该显示的传入相关参数。原创 2024-03-23 22:20:19 · 1082 阅读 · 0 评论 -
SpringBoot 整合 Kafka 实现千万级数据异步处理
在之前的文章中,我们详细的介绍了的架构模型,在集群环境中,可以通过设置分区数来加快数据的消费速度。光知道理论可不行,我们得真真切切的实践起来才行!下面,我将结合生产环境的真实案例,以SpringBoot技术框架为基础,向大家介绍的使用以及如何实现数据高吞吐!原创 2024-03-13 23:07:37 · 1258 阅读 · 0 评论 -
SpringBoot 中实现订单30分钟自动取消的策略
以上三种方案都可以实现订单在30分钟内未支付则自动取消的需求。根据实际业务需求、系统负载和其他因素,可以选择最适合自己系统的实现方案。每种方案都有其优缺点,需要根据具体情况权衡。原创 2024-03-13 21:35:03 · 420 阅读 · 0 评论 -
MQ如何防止消息被重复消费?
被询问如何防止MQ消息被重复消费时,其实是在考察候选人对消息队列、分布式系统设计以及容错机制的理解,通过这些问题,可以全面了解候选人在处理MQ消息重复消费问题时的思考方式、技术能力和实践经验,从而评估其是否适合担任相关岗位。原创 2024-03-03 20:48:37 · 1287 阅读 · 0 评论 -
SpringBoot拦截器、过滤器、自定义注解、监听器、全局异常-使用详解
自定义一个注解,为该注解加一个参数name=kaifamiao,然后在拦截器里获取这个name要在Spring Boot中实现这个功能,你需要创建一个自定义注解,并在拦截器中读取这个注解的参数值。首先,创建一个自定义注解。在这个例子中,我们将创建一个名为的注解,它有一个名为name的参数。原创 2023-12-02 20:11:05 · 352 阅读 · 0 评论 -
九种分布式ID解决方案
在复杂的分布式系统中,往往需要对大量的数据进行唯一标识,比如在对一个订单表进行了分库分表操作,这时候数据库的自增ID显然不能作为某个订单的唯一标识。除此之外还有其他分布式场景对分布式ID的一些要求原创 2023-05-20 23:46:26 · 1399 阅读 · 1 评论 -
SpringBoot 处理 CORS 跨域请求的三种方法
CORS是一个W3C标准,全称是”跨域资源共享”,允许浏览器向跨源服务器,发出请求,从而克服了AJAX只能同源使用的限制。它通过服务器增加一个特殊的来告诉客户端跨域的限制,如果浏览器支持CORS、并且判断Origin通过的话,就会允许发起跨域请求。好了,关于Springboot比较常用的解决跨域问题方式都已经分享给大家了,希望对大家有所帮助。原创 2023-05-20 22:47:25 · 642 阅读 · 0 评论 -
新写了的 AOP 日志切面,方便以后直接使用。
面向切面编程是一种编程范式,它作为OOP面向对象编程的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理权限控制缓存控制日志打印等等。核心关注点和横切关注点。业务处理的主要功能为核心关注点,而非核心、需要拓展的功能为横切关注点。集中处理某一关注点/横切逻辑可以很方便的添加/删除关注点侵入性少,增强代码可读性及可维护性 因此当想打印请求日志时很容易想到切面,对控制层代码0侵入。原创 2023-04-30 00:25:48 · 1188 阅读 · 0 评论 -
关于MyBatis 批量插入乱用 foreach的问题。
所以,如果非要使用 foreach 的方式来进行批量插入的话,可以考虑减少一条 insert 语句中 values 的个数,最好能达到上面曲线的最底部的值,使速度最快。近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。乍看上去这个foreach没有问题,但是经过项目实践发现,当表的列数较多(20+),以及一次性插入的行数较多(5000+)时,整个插入的耗时十分漫长,达到了14分钟,这是不能忍的。的方式来插入,可以提升性能的方式。原创 2023-03-26 19:27:25 · 536 阅读 · 0 评论 -
Java调用第三方http接口的方式
在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。原创 2023-02-23 21:53:51 · 658 阅读 · 0 评论 -
SpringCache学习笔记
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。针对不同的缓存技术需要实现不同的CacheManager:在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:在spring boot项目中,使用原创 2022-10-25 02:30:00 · 287 阅读 · 4 评论 -
@Transactional 注解失效的3种原因及解决办法
第一种 l注解标注方法修饰符为非public时,解将会不起作用。例如以下代码。定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法在同一个包内,新建调用对象,进行访问。测试用例以上的访问方式,导致事务没开启,因此在方法抛出异常时,;操作不会进行回滚。如果方法改为public的话将会正常开启事务,将会进行回滚。在类内部调用调用类内部l标注的方法。这种情况下也会导致事务不开启。示例代码如下。设置一个内部调用测试用例。上面就是使用的测试代码,运行测试知道,外部调用事务方法能够原创 2022-06-11 10:44:35 · 11245 阅读 · 2 评论 -
Spring Boot 日期时间处理总结
GET请求及POST表单日期时间字符串格式转换这种情况要和时间作为Json字符串时区别对待,因为前端json转后端pojo底层使用的是Json序列化Jackson工具(HttpMessgeConverter);而时间字符串作为普通请求参数传入时,转换用的是Converter,两者在处理方式上是有区别。使用自定义参数转换器(Converter)实现 org.springframework.core.convert.converter.Converter,自定义参数转换器,如下:@Configurati原创 2022-05-28 09:38:34 · 2021 阅读 · 1 评论 -
Spring Boot 中实现跨域的 5 种方式
一、为什么会出现跨域问题出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)二、什么是跨域当一个请求url的协议、域名、端口原创 2022-05-15 20:57:31 · 207 阅读 · 0 评论 -
通用缓存解决方案
在接口服务中,有必要对于接口进行缓存处理,尤其是GET请求,如果每个接口单独添加的话会存在很多的重复的逻辑,所以可以编写一套通用的解决方案。实现思路:通过拦截器实现对请求的拦截,在拦截器中实现缓存的命中。通过ResponseBodyAdvice进行对响应的拦截,可以将数据缓存到Redis中。考虑到,不能对于所有的请求都一刀切,所以需要创建@Cache注解进行标记,只有标记的Controller才进行缓存处理。缓存的处理中,仅针对GET请求处理,其他的请求均不做处理。1.自定义注解packa原创 2022-04-10 18:25:24 · 186 阅读 · 0 评论 -
Spring Boot 之 spring.factories的用法
为什么要使用,因为在程序开发中,可能包名不一样,pom依赖的很多的jar 他们是如何把这些类进行注入到spring容器中的呢。所以springboot就提出了spring.factories原创 2022-04-03 23:25:52 · 704 阅读 · 0 评论 -
Java8中Stream详细用法大全
一、概述Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的Lambda ,给我们操作集合(Collection)提供了极大的便利。Stream流是JDK8新增的成员,允许以声明性方式处理数据集合,可以把Stream流看作是遍历数据集合的一个高级迭代器。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找/筛选/过滤、排序、聚合和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的原创 2022-02-16 17:10:51 · 60741 阅读 · 19 评论 -
j2cache多级缓存
1. j2cache介绍j2cache是OSChina目前正在使用的两级缓存框架。j2cache的两级缓存结构:L1: 进程内缓存 caffeine/ehcacheL2: 集中式缓存 Redis/Memcachedj2cache其实并不是在重复造轮子,而是作资源整合,即将Ehcache、Caffeine、redis、Spring Cache等进行整合。由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈,因此L1的目标是降低对L2的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避原创 2021-11-05 09:11:49 · 921 阅读 · 0 评论 -
Springboot学习总结
Springboot 概念SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率Spingboot功能1) 自动配置Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是SpringBoot自动完成的。2) 起步依赖起步依赖本质上是一个Maven项目对象模型原创 2022-01-31 22:47:40 · 750 阅读 · 0 评论