SpringBoot
文章平均质量分 82
SpringBoot...
土味儿~
这个作者很懒,什么都没留下…
展开
-
SpringBoot中java操作excel【EasyExcel】
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;原创 2023-07-24 18:47:10 · 2954 阅读 · 0 评论 -
Nacos的安装与使用(SpringCloud)
Nacos /nɑ:kəʊs/ 是 DynamicNaming andCoService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。原创 2023-06-28 09:00:44 · 5987 阅读 · 0 评论 -
限流与令牌桶
令牌桶是一种常用的流量控制技术。令牌桶本身没有丢弃和优先级策略。原理1.令牌以一定的速率放入桶中。2.每个令牌允许源发送一定数量的比特。3.发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。4.如果没有足够的令牌发送包,这个包就会等待直到有足够的令牌(在整形器的情况下)或者包被丢弃,也有可能被标记更低的DSCP(在策略者的情况下)。5.桶有特定的容量,如果桶已经满了,新加入的令牌就会被丢弃。因此,在任何时候,源发送到网络上的最大突发数据量与桶的大小成比例。原创 2023-06-14 20:03:42 · 1066 阅读 · 0 评论 -
java生成、识别条形码和二维码
使用zxing开源库BitMatrix可以生成、识别条形码和二维码依赖原创 2023-06-10 12:31:36 · 1862 阅读 · 1 评论 -
微服务下网关聚合Swagger文档、starter统一配置Swagger
更加细致的设计思路:(网上有介绍)微服务中不需要Swagger的ui包,只要能生成api的json数据包,供网关抓取就可以。同时网关中也不用自已成生api的json数据包,也可以去掉一些相关的依赖包。有些内部服务可以通过docker的内部网络直接访问,可以单独配置这类内部服务的API文档。至此,用starter实现微服务的swagger配置完成!网关把各个微服务的文档聚合起来,通过网关统一访问。从网关配置中过滤出Swagger的API文档配置信息。需要使用swagger的服务注入。原创 2023-04-22 09:56:49 · 1819 阅读 · 2 评论 -
用starter实现api接口的加密与日志功能
加密注解原创 2023-04-19 07:46:37 · 487 阅读 · 0 评论 -
用spring-boot-starter实现事务的统一配置
微服务架构下,多个微服务都需要事务操作,如果在每个微服务下都从头配置事务,将非常繁锁。事务配置具有高度的一致性,可以抽取出来,制作starter,在需要配置事务的服务中引入starter依赖即可。采用springAOP的方式实现事务。原创 2023-04-18 09:24:04 · 844 阅读 · 0 评论 -
用starter实现Oauth2中资源服务的统一配置
Oauth2中的资源服务Resource需要验证令牌,就要配置令牌的解码器JwtDecoder,认证服务器的公钥等等。如果有多个资源服务Resource,就要重复配置,比较繁锁。把公共的配置信息抽取出来,制成starter,可以极大地简化操作。原创 2023-04-16 08:44:53 · 820 阅读 · 0 评论 -
SpringBoot下RabbitMQ的实战应用:动态创建和动态监控队列、死信、备份交换机
每个用户对应一个普通队列;当用户过多时,相应的队列也会很多,并且队列是持久化的,会占用较多的系统资源;交换机收到消息,但无法投递时,转发至备份交换机,再广播至对应队列。缓存操作不是本文的重点,用模型类代替;缓存中未得到确认的消息,由定时器重新发送;用户登录后,动态切换要监控的队列;未发送成功的消息,由缓存保存,定时重发。如果用户退出后,也要更新监控列表;是接收不到的,消息会存储在相应对列中。发消息,消息应该不会被消费,存在。项目要足够稳健,消息不能丢失。交换机、队列、消息持久化。,这时再向上一个登录用户。原创 2023-01-07 18:17:54 · 4079 阅读 · 7 评论 -
SpringBoot中@Scheduled定时任务重复执行、输出两次日志的问题
调试定时任务时,发现控制台中出现了重复的日志信息。原创 2022-09-19 09:03:23 · 4092 阅读 · 0 评论 -
【oauth2 客户端模式】Spring Authorization Server + Resource + Client 资源服务间的相互访问
1、概述上一节中介绍了项目的搭建,并实现了授权码模式的访问。在上一节的基础上,再来实现客户端模式。【图文详解】搭建 Spring Authorization Server + Resource + Client 完整Demo用户通过客户端访问资源是 授权码模式微服务(资源)间的访问是 客户端模式;客户端模式下,只需要提供注册客户端的ID和密钥,就可以向授权服务器申请令牌,授权服务器核实ID和密钥后,会直接发放令牌,无须再认证/授权,特别适合项目内部模块间的调用。2、授权服务器中注册新客户端原创 2022-05-20 12:45:31 · 5069 阅读 · 11 评论 -
SpringCloud 下 MultipartFile 序列化(JSON)出错的解决方案
在SpringCloud架构下,用户向客户端上传文件,客户端调用文件处理微服务去处理文件。原创 2022-08-30 13:36:55 · 8902 阅读 · 1 评论 -
Thumbnailator图像处理
功能:实现对图片压缩、旋转、缩放、裁剪、加水印原创 2022-06-13 16:59:08 · 825 阅读 · 0 评论 -
【图文详解】搭建 Spring Authorization oauth2-server-resource-client-gateway-eureka 完整Demo
1、项目概述1.1、概述本项目是在前面章节的基础上,进行的升级改造。增加了注册中心、网关,更加贴近于实际需求。在进行本节之前,请先搭建前面项目:【图文详解】搭建 Spring Authorization Server + Resource + Client 完整Demo【oauth2 客户端模式】Spring Authorization Server + Resource + Client 资源服务间的相互访问1.2、整体架构图业务流程解析1.2.1、总体结构总体上分为三原创 2022-05-25 19:56:15 · 3209 阅读 · 13 评论 -
【图文详解】搭建 Spring Authorization Server + Resource + Client 完整Demo
一个完整的Demo,有认证端,有资源端,有客户端;采用当前最新的技术。非常感谢 码农小胖哥,仔细研读了他的很多文章。本项目中的很多逻辑和代码都源自于他。如果想深入学习OAuth2,强烈建议关注胖哥。1、项目概述1.1、概述Server + Resource + Client功能完善:授权中心Server: 进行认证、授权,并发放token、刷新token,不负责token鉴权(由资源服务器自行鉴权);资源服务器Resource:提供资源,需要携带token请求,可以自行鉴权;客.原创 2022-05-19 22:16:24 · 15305 阅读 · 74 评论 -
【尚硅谷 RabbitMQ】7、发布确认高级(SpringBoot版本):回调接口、回退消息、备份交换机
在生产环境中由于一些不明原因,导致 RabbitMQ 重启。在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?1、发布确认SpringBoot版本1)确认机制方案2)代码架构图3)配置文件spring: rabbitmq: host: 192.168.19.101 port: 5672 us原创 2022-03-29 10:16:37 · 2364 阅读 · 0 评论 -
【尚硅谷 RabbitMQ】6、图文详解 延时队列:整合Springboot 队列优化 Docker中安装插件及代码实现
1、概念延时队列(延迟队列):队列内部是 有序 的,最重要的特性就体现在它的 延时 属性上延时队列中的元素是希望在指定时间到了以后或之前取出和处理延时队列就是用来存放需要在指定时间被处理的元素的队列2、使用场景订单在十分钟之内未支付则自动取消新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒用户注册成功后,如果三天内没有登陆则进行短信提醒用户发起退款,如果三天内没有得到处理则通知相关运营人员预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议这原创 2022-03-28 10:49:59 · 1563 阅读 · 0 评论 -
【Redis】7、SpringBoot整合Redis、自定义RedisTemplate、RedisUtils工具类
命令窗口下(key-value)显示乱码原因分析:默认使用了的Jdk序列化方式自定义/*** @author 土味儿/*** 自定义RedisTemplate// 直接使用 ,避免类型转换 RedisTemplate < String , Object > template = new RedisTemplate < >();原创 2022-03-10 20:10:15 · 3354 阅读 · 2 评论 -
【SpringBoot】2、运行原理初探【狂神篇】
1、pom.xml自已建的 Spring Boot 工程,默认就有一个父工程 spring-boot-starter-parent,父工程里面还有一个父工程 spring-boot-dependencies自建工程<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>原创 2022-01-17 19:27:10 · 265 阅读 · 0 评论 -
【SpringBoot】14、整合MyBatis【狂神篇】
1、导jar包(1)手工导入<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.1</version></dependency>(2)创建工程时勾选依赖2、配置数据源与整合JDBC、原创 2022-01-21 13:59:20 · 763 阅读 · 0 评论 -
【SpringBoot】3、yaml配置【狂神篇】
yaml也称yml;和xml、properties一样,都是配置文件SpringBoot推荐使用yamlSpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 applicationapplication.properties语法结构 :key=valueapplication.yml语法结构 :key:空格 value配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都自动配置好了1、yaml概述YAM.原创 2022-01-17 19:34:31 · 1209 阅读 · 0 评论 -
【SpringBoot】8、首页及图标定制【狂神篇】
1、首页1)源码分析@Configuration...public class WebMvcAutoConfiguration { @Configuration ... public static class EnableWebMvcConfiguration{ // this.mvcProperties.getStaticPathPattern() 得到静态资源路径 @Bean public WelcomePageHandle原创 2022-01-18 12:38:07 · 283 阅读 · 1 评论 -
【SpringBoot】19、异步、定时、邮件任务【狂神篇】
1、异步任务1)新建web项目2)非导步模拟耗时业务@Servicepublic class AsyncService { /** * 模拟执行耗时业务 */ public void hello(){ System.out.println("业务处理中..."); try { // 休眠5秒 TimeUnit.SECONDS.sleep(5); } catch (Int原创 2022-01-25 12:32:33 · 194 阅读 · 0 评论 -
【SpringBoot】10、MVC自动配置原理【狂神篇】
1、官方文档Spring MVC Auto-configuration// Spring Boot为Spring MVC提供了自动配置,它可以很好地与大多数应用程序一起工作。Spring Boot provides auto-configuration for Spring MVC that works well with most applications.// 自动配置在Spring默认设置的基础上添加了以下功能:The auto-configuration adds the followi原创 2022-01-18 21:27:32 · 440 阅读 · 0 评论 -
【SpringBoot】20、自定义启动器 Starter【保姆级教程】
1、说明启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库;命名归约:官方命名:前缀:spring-boot-starter-xxx比如:spring-boot-starter-web…自定义命名:xxx-spring-boot-starter比如:mybatis-spring-boot-starter2、编写启动器1)新建一个空项目项目建成后选择jdk版本2)新建一个普通Maven模块tuwer-spring-boot原创 2022-01-27 12:47:26 · 2171 阅读 · 0 评论 -
【SpringBoot】13、整合Druid【狂神篇】
1、Druid简介德鲁伊Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源Gi原创 2022-01-21 09:34:20 · 478 阅读 · 0 评论 -
【SpringBoot】4、JSR303数据校验【狂神篇】
1、引入校验启动器<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>2、@Validated@Validatedpublic class Person { @Email(message = "邮箱格式不正原创 2022-01-17 19:36:00 · 92 阅读 · 0 评论 -
【SpringBoot】12、整合JDBC【狂神篇】
1、SpringData简介对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。Sping Data 官网:https://spring.io/projects/spring-data2、创建测试项目3、分析启动器<dependencies>原创 2022-01-21 09:30:30 · 1571 阅读 · 8 评论 -
【SpringBoot】5、多环境切换【狂神篇】
profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境1、多配置文件在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml, 用来指定多个环境版本如:application-test.properties 测试环境application-dev.properties 开发环境Springboot并不会直接启动这些配置文件,它默认使用application.properties主.原创 2022-01-17 19:39:47 · 504 阅读 · 0 评论 -
【SpringBoot】16、整合Spring Security【狂神篇】
1、安全简介在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中原创 2022-01-22 20:30:37 · 349 阅读 · 2 评论 -
【SpringBoot】6、自动配置原理【狂神篇】
SpringBoot 官方文档中有大量的配置,无法全部记住1、分析自动配置原理以 HttpEncodingAutoConfiguration(Http编码自动配置)为例分析自动配置原理@Configuration( proxyBeanMethods = false)@EnableConfigurationProperties({ServerProperties.class})@ConditionalOnWebApplication( type = Type.SERVLET.原创 2022-01-17 19:44:36 · 146 阅读 · 0 评论 -
【SpringBoot】7、静态资源处理【狂神篇】
1、源码分析WebMvcAutoConfiguration@Configuration...public class WebMvcAutoConfiguration { @Configuration ... // 静态内部类 public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ServletContextAware { // 添加资源原创 2022-01-18 12:34:54 · 1015 阅读 · 0 评论 -
【SpringBoot】15、实现事务操作的三种方式
1、@Transactional项目只要整合了JDBC等数据源后,不需要导入额外的包在接口、接口方法、类以及类方法上添加 @Transactional 即可常用配置参 数 名 称功 能 描 述readOnly该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。例如:@Transactional(readOnly=true)rollbackFor该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中原创 2022-01-21 14:03:25 · 3092 阅读 · 0 评论 -
【SpringBoot】18、整合Swagger 3.0【狂神篇】
丝袜哥1、Swagger简介Restful Api 文档在线自动生成器API 文档 与API 定义同步更新不再需要手工写API文档直接运行,在线测试API2、集成SwaggerSpringBoot 集成 Swagger 3.0.0与 Swagger2.x.x 是有区别的1)新建web项目2)pom.xml 引入启动器Swagger 3.0.0 只需要引入启动器 springfox-boot-starterSwagger 2.x.x 需要引入两个jar包 s.原创 2022-01-24 13:17:49 · 2060 阅读 · 0 评论 -
【SpringBoot】9、模板引擎Thymeleaf【狂神篇】
1、模板引擎概述SpringBoot是以jar的方式,不是war,还是嵌入式的Tomcat,所以默认是不支持jsp的SpringBoot使用模板引擎:模板引擎,其实很多,jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot推荐的Thymeleaf,模板引擎有非常多,但思想都是一样的2、引入Thymeleaf 官网:https://www.thymeleaf.org/Github 的主页:https://github.com/thymelea原创 2022-01-18 12:41:25 · 881 阅读 · 0 评论 -
【SpringBoot】22、Dubbo和Zookeeper集成【狂神篇】
1、分布式1)什么是分布式系统?在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”;分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。分布式系统(distributed system)是建立在网络之上的软件系统。首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的原创 2022-02-05 10:38:54 · 190 阅读 · 0 评论 -
【SpringBoot】21、整合 富文本编辑器 Editor.md
1、环境搭建1)新建SpringBoot工程2)导jar包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.mybatis.spring.boo原创 2022-01-28 23:03:53 · 1852 阅读 · 0 评论 -
【SpringBoot】11、员工管理系统【狂神篇】
1、准备工作1)前端页面将html页面放入templates目录将css,js,img放入到static目录2)实体类Department@Data@AllArgsConstructor@NoArgsConstructorpublic class Department { private Integer id; private String departmentName;}Employee@Data@NoArgsConstructorpublic原创 2022-01-20 10:37:47 · 3131 阅读 · 0 评论 -
【SpringBoot】1、HelloWorld【狂神篇】
1、简介什么是SpringBoot?Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置原创 2022-01-17 19:18:05 · 123 阅读 · 0 评论