SpringBoot
文章平均质量分 84
介绍SpringBoot
爱吃牛肉的大老虎
学无止境,既要有深度又要有广度地学习
展开
-
SpringBoot应用零停机滚动更新
在个人或者企业服务器上,总归有要更新代码的时候,普通的做法必须先终止原来进程,因为新进程和老进程端口是一个,新进程在启动时候,必定会出现端口占用的情况,但是,还有黑科技可以让两个SpringBoot进程真正的共用同一个端口,这是另一种解决办法。那么就会出现一个问题,如果此时有大量的用户在访问,但是代码又必须要更新,这时候如果采用上面的做法,那么必定会导致一段时间内的用户无法访问,这段时间还取决于项目启动速度,那么在单体应用下,如何解决这种事情?一种简单办法是,新代码先用其他端口启动,启动完毕后,更改。原创 2024-07-28 19:30:59 · 1141 阅读 · 0 评论 -
SpringBoot整合 Kaptcha 验证码
为防止验证系统被暴力破解,很多系统都增加了验证码效验,比较常见的就是图片二维码,业内比较安全的是短信验证码,当然还有一些拼图验证码,加入人工智能的二维码等等,这次就是前后端分离的图片二维码登录方案。这个项目为例,通过springboot项目集成Kaptcha来实现验证码生成和登录方案。验证码方法层CaptchaService。基于验证码的轮子还是挺多的,就以。验证码返回对象CaptchaVO。用户登录对象封装LoginDTO。原创 2024-07-11 20:35:37 · 510 阅读 · 0 评论 -
SpringBoot整合Minio
文章目录1 Minio1.1 概述1.2 应用场景1.3 Minio实现分片上传的主要步骤1.4 Centos7安装Minio1.5 搭建springboot 环境1.5.1 pom.xml1.5.2 创建容器桶1.5.3 编写配置文件1.5.4 常量类1.5.5 创建Minio的配置类1.5.5 创建Minio的工具类1.5.6 创建Ajax请求工具类1.5.7 创建Minio文件操作接口层1 Minio1.1 概述Minio 官网地址:https://min.io/文档地址:https://do原创 2024-06-30 18:53:16 · 2562 阅读 · 5 评论 -
SpringBoot集成 Geodesy讲解
浩瀚的宇宙中,地球是我们赖以生存的家园。自古以来,人类一直对星球上的位置和彼此的距离着迷。无论是航海探险、贸易往来还是科学研究,精确计算两个地点之间的距离都是至关重要的。Geodesy:大地测量学的神奇力量Geodesy,又称大地测量学,是一门研究地球形状、大小及其重力场的学科。在地球距离计算中,它扮演着至关重要的角色。Geodesy的原理基于球面几何。首先,Geodesy将地球近似为一个光滑的球体。然后,根据经纬度坐标,将两个地点视为球面上的两点。原创 2024-06-09 11:34:06 · 1011 阅读 · 0 评论 -
HTTP客户端框架之Retrofit
Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了。实现了Retrofit与框架快速整合,并且支持了诸多功能增强,极大简化开发。自定义注入OkHttpClient注解式拦截器连接池管理日志打印请求重试错误解码器全局拦截器熔断降级微服务之间的HTTP调用。原创 2024-06-09 11:22:59 · 980 阅读 · 0 评论 -
Spring,SpringMVC,SpringBoot中注解讲解
如果我们将此注解标注类,那么类中的所有方法都将获得支持跨域的能力。在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求。此注解可以让我们控制更细粒度的基于表达式的配置条件限制。在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过。注解一样,被此注解标注的类,会自动被Spring所管理。注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个。所标注的类,在该类中,定义一个用于处理具体异常的方法,并使用。原创 2023-11-14 21:39:27 · 402 阅读 · 1 评论 -
SpringBoot之实现Web消息实时消息推送
长轮询是对上边短轮询的一种改进版本,在尽可能减少对服务器资源浪费的同时,保证消息的相对实时性。长轮询在中间件中应用的很广泛,比如Nacos和apollo配置中心,消息队列中都有用到长轮询。这次使用apollo配置中心实现长轮询的方式,应用了一个类,它是在后经过Spring封装提供的一种异步请求机制,直意就是延迟结果。可以允许容器线程快速释放占用的资源,不阻塞请求线程,以此接受更多的请求提升系统的吞吐量,然后启动异步工作线程处理真正的业务逻辑,处理完成调用提交响应结果。原创 2023-10-10 09:19:43 · 831 阅读 · 1 评论 -
SpringBoot集成WebSocket讲解
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工()通信——允许服务器主动发送信息给客户端,建立客户端和服务器之间的通信渠道。浏览器和服务器仅需一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。原创 2023-10-09 18:54:24 · 2098 阅读 · 1 评论 -
SpringBoot之使用Redis和注解实现接口幂等性
*** 在需要保证 接口幂等性 的Controller的方法上使用此注解/*** 在需要保证 接口幂等性 的Controller的方法上使用此注解/*** 在需要保证 接口幂等性 的Controller的方法上使用此注解/*** 在需要保证 接口幂等性 的Controller的方法上使用此注解Retention;/*** 在需要保证 接口幂等性 的Controller的方法上使用此注解/**原创 2023-10-09 14:08:27 · 287 阅读 · 0 评论 -
SpringBoot内嵌Tomcat连接池分析
在版本中内置Tomcat版本是9.0.65SpringBoot内置TomcatTomcat的连接等待队列长度,默认是100Tomcat的最大连接数,默认是8192Tomcat的最小工作线程数,默认是10Tomcat的最大线程数,默认是200Tomcat的连接超时时间,默认是20s相关配置及默认值如下server:tomcat:# 当所有可能的请求处理线程都在使用中时,传入连接请求的最大队列长度# 服务器在任何给定时间接受和处理的最大连接数。原创 2023-08-22 10:10:48 · 2082 阅读 · 0 评论 -
SpringBoot整合EasyExcel 3.x
EasyExcel是一个基于 Java 的、快速、简洁、解决大文件内存溢出的Excel处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成 Excel 的读、写等功能。EasyExcel在EasyExcel@ExcelProperty("用户编号") @ColumnWidth(20) private Long id;@ExcelProperty("用户名") @ColumnWidth(20) private String username;原创 2023-07-06 22:53:09 · 923 阅读 · 0 评论 -
SpringBoot优化之项目启动优化
保证服务正常启动 的方式来改造的,而删除"com.xxx.ad.rediscache"后启动服务并无异常,因此就没有进一步的操作,直接上预发验证了。这就奇怪了,既然不扫描该组件的业务代码根路径,也就没有执行注入该组件中定义的。原理,添加一个自定义的实现类,在不同阶段结束时打印下当前时间,通过计算不同阶段的运行时间,就能大体定位哪些阶段耗时比较高,然后重点排查这些阶段的代码。了解缓存失效的原因后,就有解决的办法了,因为是自己团队的组件,就没必要通过 JavaConfig 显式手动导入的方式改造,而是通过。转载 2023-05-16 11:59:10 · 575 阅读 · 0 评论 -
SpringBoot整合规则引擎Drools
假如有这么个需求,网上购物,需要根据不同的规则计算商品折扣,比如VIP客户增加5%的折扣,购买金额超过1000元的增加10%的折扣等,而且这些规则可能随时发生变化,甚至增加新的规则。面对这个需求,你该怎么实现呢?难道是计算规则一变,就要修改业务代码,重新测试,上线吗。其实,我们可以通过规则引擎来实现,Drools就是一个开源的业务规则引擎,可以很容易地与springboot应用程序集成,那本文就用Drools来实现一下上面说的需求吧。前面的类中指定drools规则的目录,现在我们在目录下添加。原创 2023-05-11 09:10:05 · 5149 阅读 · 1 评论 -
SpringBoot整合RocketMQ
先看看每次发送消息或者消费消息消息发送成功或者失败要打印消息日志,用于业务排查问题。如果消息量较少,建议在消费入口方法打印消息,消费耗时等,方便后续排查问题。RocketMQ无法避免消息重复(),所以如果业务对消费重复非常敏感,务必要在业务层面进行去重处理。可以借助关系数据库进行去重。首先需要确定消息的唯一键,可以是msgId,也可以是消息内容中的唯一标识字段,例如订单Id等。接下来讨论的是在RocketMQ中发送消息时选择何种消息类型最为合适。在RocketMQ发送Json对象。转载 2023-05-08 13:41:23 · 6443 阅读 · 1 评论 -
SpringBoot整合ElasticSearch
大致流程创建对应的请求 --> 设置请求(添加规则,添加数据等) --> 执行对应的方法(传入请求,默认请求选项)–> 接收响应结果(执行方法返回值)–> 输出响应结果中需要的数据(source,status等)注意事项如果不指定id,会自动生成一个随机id正常情况下,不应该这样使用,如果索引发生改变了,那么代码都需要修改,可以定义一个枚举类或者一个专门存放常量的类,将变量用final static等进行修饰,并指定索引值。其他地方引用该常量即可,需要修改也只需修改该类即可。转载 2022-11-30 19:07:47 · 2802 阅读 · 1 评论 -
SpringBoot整合Alibaba-Dubbo和Apache-Dubbo
由于dubbo起初是阿里开发,后来交给了apache维护,所以市场上就有两个版本的dubbo整合。原创 2022-11-25 21:53:31 · 1249 阅读 · 0 评论 -
SpringBoot整合Spring Data JPA
JPA()即java持久化API,它的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强。JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现。在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA。原创 2022-11-16 20:59:23 · 1598 阅读 · 0 评论 -
SpringBoot缓存之整合Ehcache
这一点应该是很容易理解的,因为缓存不关心方法的执行逻辑,它能确定的是:对于同一个方法,如果参数相同,那么返回结果也是相同的。但是如果参数不同,缓存只能假设结果是不同的,所以对于同一个方法,程序运行过程中,使用了多少种参数组合调用过该方法,理论上就会生成多少个缓存的 key(当然,这些组合的参数指的是与生成 key 相关的)注解的缓存方法总是会执行,而且会尝试将结果放入缓存(当然,是否真的会缓存还跟一些注解参数有关,比如:unless 参数)。调用该方法时,会返回缓存中的值,而不会实际执行该方法。原创 2022-11-14 21:38:21 · 1073 阅读 · 0 评论 -
SpringBoot热部署:(1)不同工具(idea,eclipse)修改页面不需要重启就生效
1.eclipse修改页面不用重启的配置在pom.xml文件里面添加依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> ...原创 2019-04-02 09:49:07 · 1825 阅读 · 0 评论 -
SpringBoot使用Druid监控SQL
文章目录1 监控mybatis下SQL1.1 Druid简介1.2 添加pom.xml依赖1.3 配置相关属性1.3.1 如何配置 Filter1.4 监控页面1.5 sql监控1.6 慢sql记录1.7 spring 监控1.8 去 Ad(广告)1.9 获取Druid的监控数据2 监控mybatis-plus下SQL2.1 pom.xml2.2 application.yml2.3 相关配置信息1 监控mybatis下SQL1.1 Druid简介Druid是阿里巴巴开发的号称为监控而生的数据库连接池转载 2022-05-02 18:50:19 · 2416 阅读 · 0 评论 -
SpringBoot之自动装配和启动流程分析
文章目录1 SpringApplication引导启动1.1 new SpringApplication—创建引导启动的实例1.2 run()—开始引导启动1.2.1 new StopWatch()—创建计时器1.2.2 configureHeadlessProperty()—配置Headless模式1.2.3 SpringApplicationRunListener.start()—获取监听器,启动监听1.2.4 prepareEnvironment()—准备环境,创建ConfigurableEnviro原创 2022-03-31 10:05:30 · 2013 阅读 · 0 评论 -
SpringBoot多数据源配置
文章目录1 SpringBoot分库配置1.1 准备数据1.2 springboot+mybatis使用分包方式整合1.2.1 pom.xml1.2.2 application.yml 配置文件1.2.3 连接数据源配置文件1.2.3.1 连接源配置一1.2.3.2 连接源配置二1.2.4 项目结构1.3 springboot+druid+mybatisplus使用注解整合1.3.1 pom.xml1.3.2 application.yml 配置文件1.3.3 使用@DS区分数据源1.4 读写分离库1.4.转载 2022-03-27 14:52:12 · 36142 阅读 · 17 评论 -
springboot配置SSL以及HTTP转HTTPS
SSL配置是我们在实际应用中经常见到的场景SSL(Secure Sockets Layer,安全套接层)是为忘了通信提供安全及数据完整性的一种安全协议,SSL在网络传送层对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Rrotocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),它建立原创 2021-06-22 10:31:40 · 1119 阅读 · 0 评论 -
SpringBoot之解决跨域问题的方法
文章目录1 引言2 CORS2.1 cors简介2.2 cors分类2.3 响应头参数详解2.4 跨域解决2.4.1 全局配置2.4.2 过滤器配置2.4.3 方法上配置转载于:https://mp.weixin.qq.com/s/wu6MyPLXgCUsqMpmuVdNYQ1 引言前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看。问题背景:Same Origin Policy,译为同源策略。它是对于客户端脚本(尤转载 2021-04-30 14:44:54 · 441 阅读 · 1 评论 -
SpringBoot中全部注解归纳解释
文章目录1 springboot注解1.1 引言1.2 基本注解1.3 JPA注解1.4 SpringMVC相关注解1.5 全局异常处理1.6 项目中具体配置解析和使用环境1.7 Lombok注解1.8 数据库实体相关注解1 springboot注解1.1 引言spring boot是采用纯java代码,不在需要配置繁杂的xml文件,在配置中也可享受面向对象带来的好处,类型安全对重构可以提供良好的支持,减少复杂配置文件的同时亦能享受到springIoC容器提供的功能1.2 基本注解@Spring原创 2021-04-06 08:56:49 · 379 阅读 · 0 评论 -
@Component和@Configuration作为配置类的差别
随着spingboot的大火,注解式配置受到了大家的热烈欢迎,而@Component和@Configuration都可以作为配置类,之前一直都没觉得这两个用起来有什么差别,可能有时程序跑的和自己想的有所区别也没注意到。请看下面一段代码:@Configurationpublic class MyTestConfig { @Bean public Driver driver(){...转载 2020-02-08 20:07:02 · 850 阅读 · 0 评论 -
SpringBoot的健康监控
文章目录1 使用Actuator检查与监控的步骤1.1 在 pom 文件中添加 Actuator 的坐标1.2 在全局配置文件中设置关闭安全限制2 使用可视化的监控报表 Spring Boot Admin2.1 搭建服务端2.1.1 引入admin坐标2.1.2 修改启动类,添加@EnableAdminServer2.2 搭建客户端2.2.1 修改客户端的pom文件添加依赖2.2.2 修改客户端的...原创 2020-02-05 21:21:39 · 1907 阅读 · 0 评论 -
SpringBoot配置之.properties,.yml,-{profile}优先级和yml介绍
文章目录1 简介1.1 properties vs yml1.2 classpath: vs classpath:/config1.3 classpath:/config/yml vs classpath:properties1.4 properties vs -profile.properties1.5 properties vs -profile.yml1.6 classpath:/confi...转载 2019-11-09 09:45:58 · 6946 阅读 · 3 评论 -
SpringBoot热部署:(2)SpringLoader 和DevTools 详解
目录1.使用 SpringLoader 进行项目的热部署1.1方式一: 以 maven 插件方式使用 SpringLoader1.1.1 在 pom 文件中添加插件配置1.1.2 使用 maven 的命令起来启动spring-boot:run1.2方式二:在项目中直接使用 jar 包的方式1.2.1添加 springloader 的 jar 包1.2.2启动方式2....原创 2019-04-10 10:00:53 · 1521 阅读 · 0 评论 -
SpringBoot视图层:(4)thymeleaf标签详解
目录1.springboot引入thymeleaf的依赖2.Thymeleaf 语法详解2.1 变量输出与字符串操作2.1.1th:text2.1.2th:value2.1.3 字符串对象2.2日期格式化处理2.3条件判断2.3.1th:if2.3.2th:switch2.4迭代遍历2.4.1th:each遍历list2.4.2th:each遍历...原创 2019-04-03 17:19:41 · 776 阅读 · 2 评论 -
启动springBoot服务报错The port may already be in use or the connector may be misconfigured
tomcat 8080端口被占用1、进入cmd 输入 netstat -ano 然后查到8080端口是否在使用中或者直接使用 netstat -ano|findstr 8080 查到8080端口是否使用使用 netstat -ano查到对应的进程号为4276同理,使用netstat -ano|findstr 8080 可以直接查到2.查到端口号对应的进程号...原创 2019-04-02 16:30:55 · 1965 阅读 · 0 评论 -
SpringBoot视图层:(1)freemarker标签使用
注意:在springboot里面使用freemarker时,必须在src/main/resources下建立templates文件夹,freemarker文件都放在该templates文件下springboot所引入的freemarker的pom依赖:<dependency> <groupId>org.springframework.boot</gr...原创 2019-04-02 16:26:40 · 1052 阅读 · 0 评论 -
SpringBoot视图层:(2)三种页面jsp,freemarker,thymeleaf共存问题
1.在springboot的配置文件pom.xml里面如果三者共存,会让jsp页面访问不到,直接报错,但是另外两个不错三者pom.xml的配置文件: <!-- thymeleaf的引用坐标--> <dependency> <groupId>org.springframework.boot</groupId> ...原创 2019-04-02 11:05:04 · 2568 阅读 · 0 评论 -
SpringBoot视图层:(3)idea里面的springboot找不到jsp页面
最近写了一个关于springboot的jsp项目,在idea里面不能访问到jsp页面,但是在eclipse里面就可以访问到jsp页面代码完全一样,想来想去,只能是工具不兼容问题了在网上搜罗了很多很多资料后,才发现原来与idea创建工程的方式有关, 假设你的code目录如下:learn-springboot | --- module1 (这是我们要运行的springboot...原创 2019-04-01 17:27:44 · 1980 阅读 · 0 评论 -
SpringBoot整合web:(2)访问静态资源与文件上传
1.SpringBoot访问静态资源(有两种方法)1.1SpringBoot 从 classpath/static 的目录访问(src/main/resources),注意目录名称必须是 static如图所示:注意:在src/main/resources下建立static可能会报失败说是无效的包名,此时不是建立包package而是建立一个floder1.1.1编写启动器...原创 2019-03-30 13:24:23 · 695 阅读 · 1 评论 -
SpringBoot整合web:(1)servlet,filter,listener,interceptor
1.springboot整合servlet1.1通过注解扫描完成 Servlet 组件的注册(方式一)1.1.1编写servlet@WebServlet(name="firstServlet",urlPatterns="/first")public class FirstServlet extends HttpServlet{ @Override protected void ...原创 2019-03-30 12:55:05 · 1353 阅读 · 1 评论 -
springboot异常:启动报错,或不能访问jsp页面
1,启动错误关键错误(丢失了web容器的工厂,也就是说我们并没有把它作为一个web应用来启动):org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.Appl...原创 2019-03-22 16:26:28 · 856 阅读 · 0 评论 -
Springboot启动报错:noSuchMethodError:...getResponseStatus()
具体错误为:Http Status 500 - Handler dispatch failed;nested exception is java.lang.noSuchMethodError: org.springframework.web.serblet.mvc.method.annotation.ServletInvocableHandlerMethod.getRes...原创 2019-03-25 10:50:45 · 995 阅读 · 0 评论 -
SpringBoot整合持久层技术(mybatis+mysql(druid)+thymeleaf)
目录1 创建pom.xml文件2添加 application.properties 全局配置文件2.1 数据库信息配置在application.properties文件中(方式一)2.2 单独的额外配置jdbc.properties文件(方式二)2.2.1 jdbc.properties的配置文件2.2.2 读取jdbc.properties配置文件3 bean实体文...原创 2019-04-14 15:43:28 · 522 阅读 · 0 评论 -
SpringBoot服务端数据校验
目录1 SpringBoot 对表单做数据校验1.1 SpringBoot 对表单数据校验的技术特点1.2 SpringBoot 表单数据校验步骤1.2.1 在实体类中添加校验规则1.2.2 在 Controller 中开启校验1.2.3 在页面中获取提示信息1.2.4遇到异常1.3解决数据校验时的异常问题1.3.1 controller层需要改写1.3......原创 2019-04-25 13:37:23 · 1774 阅读 · 1 评论