SpringBoot
文章平均质量分 75
Archie_java
求知若饥,虚心若愚(stay hungry,stay foolish)
好记性不如烂笔头
展开
-
spring.factories文件的作用
即spring.factories文件是帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到spring-boot项目的spring容器中。在Spring Boot启动时,它会扫描classpath下所有的spring.factories文件,加载其中的自动配置类,并将它们注入到Spring ApplicationContext中,使得项目能够自动运行。spring.factories文件是Spring Boot自动配置的核心文件之一,它的作用是。原创 2024-05-03 23:54:44 · 712 阅读 · 0 评论 -
SpringBoot系列教程之Bean之指定初始化顺序的若干姿势
之前介绍了@Order注解的常见错误理解,它并不能指定 bean 的加载顺序,那么问题来了,如果我需要指定 bean 的加载顺序,那应该怎么办呢?本文将介绍几种可行的方式来控制 bean 之间的加载顺序。原创 2024-04-20 23:51:56 · 960 阅读 · 0 评论 -
7min到40s:SpringBoot 启动优化实践
然后重点排查这些阶段的代码。先看下。原创 2024-04-20 23:46:59 · 1063 阅读 · 0 评论 -
SpringBoot接口防抖(防重复提交)的一些实现方案
作为一名老码农,在开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。啥是防抖所谓防抖,一是防用户手抖,二是防网络抖动。转载 2024-04-14 21:26:21 · 1165 阅读 · 0 评论 -
SpringBoot请求转发与重定向
但是可能由于B网址相对于A网址过于复杂,这样搜索引擎就会觉得网址A对用户更加友好,因而在重定向之后任然显示旧的网址A,但是显示网址B的内容。在平常使用手机的过程当中,有时候会发现网页上会有浮动的窗口,或者访问的页面不是正常的页面,这就可能是运营商通过某种方式篡改了用户正常访问的页面。重定向,是指在Nginx中,重定向是指通过修改URL地址,将客户端的请求重定向到另一个URL地址的过程,Nginx中实现重定向的方式有多种,比如使用rewrite模块、return指令等。使用场景:在返回视图的前面加上。原创 2024-04-07 22:00:55 · 1462 阅读 · 0 评论 -
【总结】SpringBoot 中过滤器、拦截器、监听器的基本使用
拦截器是在面向切面编程中应用的,就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法。是基于JAVA的反射机制。1)预处理preHandle()方法用户发送请求时,先执行preHandle()方法。会先按照顺序执行所有拦截器的preHandle方法,一直遇到return false为止,比如第二个preHandle方法是return false,则第三个以及以后所有拦截器都不会执行。若都是return true,则执行用户请求的url方法。2)后处理postHandle()方法。原创 2024-01-14 00:16:05 · 1084 阅读 · 0 评论 -
SpringBoot 使用过滤器、拦截器、切面(AOP),及其之间的区别和执行顺序
Servlet(Server Applet),全称是Java Servlet,是提供基于协议请求/响应服务的Java类。在JavaEE中是Servlet规范,即是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的Java类,一般人们理解是后者。是什么。原创 2024-01-14 00:10:35 · 1849 阅读 · 0 评论 -
Springboot支付宝沙箱支付---完整详细步骤
两种方式进行配置。这里我采取的是默认方式: 开发者如需使用系统默认密钥/证书,可在开发信息中选择系统默认密钥。注意:使用API在线调试工具调试OpenAPI必须使用系统默认密钥。原创 2024-01-13 23:39:08 · 887 阅读 · 0 评论 -
SpringBoot--过滤器/拦截器/AOP--区别/使用/顺序
本文介绍SpringMVC(SpringBoot)中的过滤器、拦截器、AOP的区别及其用法。 如果监听器、过滤器、 拦截器、 AOP都存在,则它们的执行顺序为:监听器 => 过滤器=> 拦截器=> AOP。原创 2024-01-12 23:59:26 · 1354 阅读 · 0 评论 -
SpringBoot @Async:魔法和陷阱
Async注解就像是springboot项目中性能优化的秘密武器。是的,我们也可以手动创建自己的执行器和线程池,但@Async使事情变得更简单、更神奇。@Async注释 允许我们在后台运行代码,因此我们的主线程可以继续运行,而无需等待较慢的任务完成。但是,就像所有秘密武器一样,明智地使用它并了解它的局限性非常重要。在这篇文章中,我们将深入探讨@Async 的魔力以及在 Spring Boot 项目中使用它时应该注意的问题。让我们开始吧!首先让我们学习如何在应用程序中使用 @Async 的基础知识。原创 2023-12-09 14:59:23 · 262 阅读 · 0 评论 -
Springboot可以同时处理多少请求?
SpringBoot可以同时处理多少请求?站在SpringBoot的角度来,确实可以通过一些配置来有效的去控制一次请求的连接数。比如控制100,一旦连接数超过100,客户端就会显示连接超时。看一个简单的例子,我在这里创建了一个Springboot应用,声明了一个接口。里面很简单,就是sleep了两秒。然后我配置了连接池的一些参数,参数的意思呢,后面会讲到。原创 2023-12-06 22:55:10 · 1784 阅读 · 1 评论 -
Spring Boot:数据库连接池Druid
1、为什么要使用数据库连接池?创建数据库连接(TCP连接建立时需要三次握手)是一个很耗时的过程,在使用完之后,还需要不断的释放建立的连接(销毁时需要四次握手),对资源的损耗比较大。数据库连接池会将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接访问数据库,这样可以省略创建连接和销毁连接的过程,从而提高性能。这样做的缺点是,可能某些时候完全没有数据库请求,但是也保持了数据库的最小连接数,浪费了资源,不过这种资源浪费相对于完全不采用数据库连接池还是很有优势的。2、常用的数据库连接池。原创 2023-12-03 20:37:43 · 308 阅读 · 0 评论 -
SpringBoot接收参数的七种方式
小结RequestBody和RequestParam同时使用的场景,代码如下。原创 2023-10-08 22:35:49 · 895 阅读 · 0 评论 -
RestTemplate的使用
在RestTemplate中,发送一个GET请求,我们可以通过如下两种方式:第一种:getForEntitygetForEntity方法的返回值是一个,是对请求响应的封装,包括了几个重要的元素,如响应码、contentType、contentLength、响应消息体等。比如下面一个例子:的第一个参数为要调用的服务的地址,这里调用了服务提供者提供的/hello接口,注意这里是通过服务名调用而不是服务地址,如果写成服务地址就没法实现客户端负载均衡了。第二个参数String.class表示希望返回的bod原创 2023-09-24 21:58:29 · 226 阅读 · 0 评论 -
Mybatis-Plus 关于savebatch,saveorupdatebatch遇到的坑及解决办法&拓展mybatisPlus实现类方法,批量插入时,唯一索引冲突后更新
最近mybatis-plus框架的更新,让我们基础开发中如虎添翼。其中基本的增删改查,代码生成器想必大家用着那叫一个爽。本人在使用中,也遇到一些坑。比如savebatch,saveorupdatebatch,看着这不是批量新增,批量新增或更新嘛,看着api进行开发,感觉也太好用啦。开发完一测试,速度跟蜗牛一样,针对大数据量真是无法忍受。在控制台上发现,怎么名义上是批量插入,还是一条一条的进行插入,难怪速度龟速。原创 2023-09-17 23:10:03 · 12015 阅读 · 3 评论 -
手把手教你玩转 SpringBoot 日志
学习完本文,你应当对现在这几个常用框架的有所了解,并能基础应用了。此次我们没有讲源码,也没有深入的讲其配置及进阶使用,这些我们会在后面慢慢学习。但现在我希望你能知道的是。一定要写好日志,一定要写好日志,一定要写好日志。重要的事情说三遍!这是区别新人和老鸟的一个重要依据,也是让自己排查问题更轻松的不二法门!另外,现在很多中间件都自己引用了日志插件,我们作为一个整体工程在使用中间件时,要及时发现并解决插件冲突,避免我们自己的日志配置失效,这也是一个程序员该注意的点。原创 2023-09-17 21:07:37 · 231 阅读 · 0 评论 -
SpringBoot项目打成war和jar的区别
首先给大家来讲一个我们遇到的一个奇怪的问题:1.我的一个springboot项目,用mvn install打包成jar,换一台有jdk的机器就直接可以用java -jar 项目名.jar的方式运行,没任何问题,为什么这里不需要tomcat也可以运行了?2.然后我打包成war放进tomcat运行,发现端口号变成tomcat默认的8080(我在server.port中设置端口8090)项目名称也必须加上了。原创 2023-09-09 00:06:12 · 132 阅读 · 0 评论 -
SpringBoot集成MQTT实现消息收发,断线重连
开始研究JAVA及MQTT,写下该文章方便使用参考。2、mqtt配置 application.yml。4、MQTT客户端 MqttConsumer类。6、编写测试方法MqttController。当然可以使用注解 @Value获取配置信息。这里是网上查的资料直接使用以下类来获取。1、添加依赖 pom.xml。3、获取配置信息工具类。5、mqtt回调处理类。原创 2023-09-03 23:51:28 · 732 阅读 · 0 评论 -
Spring @Autowired注入类的List,Map
一个回调接口有多种回调逻辑,在项目启动时需要将回调接口的实现类都放到一个list中然后回调每个实现类的具体方法。在Springboot中就可以通过@Autowired来将回调接口的所有实现类进行注入。原创 2023-09-03 23:35:21 · 791 阅读 · 0 评论 -
Field injection is not recommended(不再推荐使用字段注入)禁止在项目中使用 @Autowired 注解?
我们已经看到,基于字段的注入应该尽可能地避免,因为它有许多缺点,无论它看起来多么优雅。推荐的方法是使用基于构造函数和基于setter的依赖注入。对于必需的依赖,建议使用基于构造函数的注入,设置它们为不可变的,并防止它们为null。对于可选的依赖项,建议使用基于sett的注入。原创 2023-09-02 20:13:37 · 240 阅读 · 0 评论 -
解析Spring中@Controller@Service等线程安全问题
在@Controller/@Service等容器中,默认情况下,scope值是单例-singleton的,也是线程不安全的。尽量不要在@Controller/@Service等容器中定义静态变量,不论是单例(singleton)还是多实例(prototype)他都是线程不安全的。默认注入的Bean对象,在不设置scope的时候他也是线程不安全的。一定要定义变量的话,用ThreadLocal来封装,这个是线程安全的。原创 2023-09-02 20:00:30 · 601 阅读 · 1 评论 -
基于 SpringBoot 实现多租户架构:支持应用多租户部署和管理
多租户架构是指在一个应用中支持多个租户(Tenant)同时访问,每个租户拥有独立的资源和数据,并且彼此之间完全隔离。通俗来说,多租户就是把一个应用按照客户的需求“分割”成多个独立的实例,每个实例互不干扰。转载 2023-08-20 23:34:33 · 710 阅读 · 0 评论 -
Gson 反序列化,整数变小数的终极解决方案
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立。原创 2023-08-19 23:43:47 · 1074 阅读 · 0 评论 -
Springboot整合Json(Jackson,Gson,FastJson)
3.1springboot默认是使用jackson的,对jackson和gson都做了自动配置,所以一般使用这两者之一即可。如果非得要fastjson,那么必须将FastJsonHttpMessageConverter注册到容器中或者实现WebMvcConfigurer接口重写configureMessageConverters方法,将FastJsonHttpMessageConverter对象加到converters集合中即可。原创 2023-08-19 11:49:47 · 1343 阅读 · 0 评论 -
Spring Boot中解析JSON数据的三种方案
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。JSON是一个序列化的对象或数组。自己创建一个MappingJackson2HttpMessageConverter,取代JacksonHttpMessageConvertersConfiguration中项目自带的。例:@Bean。原创 2023-08-11 23:35:15 · 1944 阅读 · 1 评论 -
Spring Boot中使用Convert接口实现类型转换器
/日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");if(s!= null &&!try {//解析参数 Date date = sdf . parse(s);} }这里使用Jackson的ObjectMapper类的readValue()函数实现将Json字符串反序列化为Java对象if(s!= null &&!try {} }原创 2023-08-06 21:42:41 · 1701 阅读 · 0 评论 -
使用Autowired为什么会被IDEA警告,应该怎么修改最佳
先看一下Java初始化类的顺序:父类的静态字段 > 父类静态代码块 > 子类静态字段 > 子类静态代码块 > 父类成员变量 > 父类构造代码块 > 父类构造器 > 子类成员变量 > 子类构造代码块 > 子类构造器。这种方法也使用了@Autowired注解,但是它是作用于成员变量的Setter函数上,而不是像Fied注入一样作用于成员变量上。它的好处在于,采用了构造方法注入,这种方式对对象创建的顺序会有要求,它将避免循环依赖问题。在使用中,使用构造方法是比较可行的,加上lombok,其实也可以到达非常简便。原创 2023-08-05 23:38:00 · 312 阅读 · 1 评论 -
SpringBoot 集成短信和邮件推送消息
项目中使用lombok插件和swagger依赖,无相关依赖的请自行修改。后期发短信测试需要,暂时可以跳过此步骤。进入后根据提示开通短信服务即可。MessageVo 同用邮件的。以阿里云短信服务为例。SMTP 服务器地址。原创 2023-08-05 21:37:05 · 1063 阅读 · 0 评论 -
SpringBoot整合JavaMail实现发送邮件详解
想学习先了解一下JavaMail到底是什么。JavaMail用于处理电子邮件相关的编程接口,javaMail 是由Sun定义的一套收发电子邮件的API,它可以方便地执行一些常用的邮件传输,不同的厂商可以提供自己的实现类,但它并没有包含在jdk中,而是作为javaEE的一部分。学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。操作使用IMAP协议在邮箱中也会被删除,而使用POP3协议邮箱中不会被删除。:简单说就是SMPT是发邮件的标准,POP3是收邮件的标准,IMAP是对POP3的升级。原创 2023-08-03 22:21:02 · 756 阅读 · 0 评论 -
SpringBoot整合Elasticsearch
ES是为了查询速度快,之后会有更细致的有关ES的博客。结束语:裸体一旦成为艺术,便是最圣洁的。道德一旦沦为虚伪,便是最下流的。勇敢去做你认为正确的事,不要被世俗的流言蜚语所困扰。原创 2023-07-31 22:21:36 · 591 阅读 · 0 评论 -
SpringBoot接口加密与解密
对称加密只有一个秘钥,加密和解密都是用同一个秘钥,所以叫做对称加密。非对称加密有两个秘钥,一个是公钥,一个是私钥。非对称的特点在于,公钥加密的私钥可以解密,但私钥加密的,公钥解不出来,只能验证是否由私钥进行加密目前常见的加密方式是有两种,一种是对称加密(AES为代表),一种是非对称加密(RSA为代表)特点:只需交换公钥;公/秘钥机制,公钥加密,私钥解密(或者私钥加密,公钥解密);公钥负责加密,私钥负责解密;私钥负责签名,公钥负责验证缺点:加解密速度慢,特别是解密加密解密本身并不是难事,问题是在何时去处理。原创 2023-07-30 17:49:19 · 3461 阅读 · 0 评论 -
Spring Boot 程序优化的 14 个小妙招!
有时候我们为了统一管理会把一些变量放到yml配置文件中例如用 @ConfigurationProperties 代替@Value使用方法定义对应字段的实体@Data // 指定前缀 @ConfigurationProperties(prefix = "developer") @Component public class DeveloperProperty {使用时注入这个bean} }原创 2023-07-29 22:43:59 · 580 阅读 · 0 评论 -
手把手通过Docker部署前后端分离项目(亲测可用)
这里我用的是华为云的服务器,环境是CentOS7!分享一些自己在学习路上的一些笔记,欢迎大家共同交流与探讨!原创 2023-07-25 23:06:30 · 615 阅读 · 1 评论 -
SpringBoot使用过滤器、拦截器、切面(AOP),及其之间的区别和执行顺序
(拦截器的preHandle方法在进入controller前执行,而拦截器的postHandle方法在执行完controller业务流程后,在视图解析器解析ModelAndView之前执行,可以操控Controller的ModelAndView内容。(关于这句话的解读是:我们知道拦截器是SprinMVC自带的,而SpringMVC存在Controller层的,而controller层可以访问到service层,service层是不能访问service层的,而过滤器是客户端和服务端之间请求与响应的过滤)原创 2023-07-25 22:52:40 · 431 阅读 · 0 评论 -
还不会用mybatis-plus,手把手教你
本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。关于mybatis-plus是什么,不多做介绍了,看官方文档:https://baomidou.com/,咱们直接代码撸起来。转载 2023-07-23 15:42:57 · 1773 阅读 · 0 评论 -
别再自己瞎写工具类了,Spring Boot 内置工具类应有尽有
最近发现同事写了不少重复的工具类,发现其中很多功能,Spring 自带的都有。于是整理了本文,希望能够帮助到大家!原创 2023-07-22 11:59:56 · 170 阅读 · 0 评论 -
SpringBoot 接口数据加解密技巧,so easy!
这日,刚撸完2两代码,正准备掏出手机摸鱼放松放松,只见老大朝我走过来,并露出一个”善意“的微笑,兴伟呀,xx项目有于安全问题,需要对接口整体进行加密处理,你这方面比较有经验,就给你安排上了哈,看这周内提测行不…,额,摸摸头上飘摇着而稀疏的长发,感觉我爱了。,看起来没啥问题,实际是头天下午花了2小时碰需求,差不多花1小时写好demo测试,然后对所有接口统一进行了处理,整体一下午赶脚应该行了吧,告诉H5和安卓端同学明儿上午联调(不小的大家到这个时候发现猫腻没有,当时确实疏忽了,翻了大车…原创 2023-07-13 22:29:08 · 1031 阅读 · 3 评论 -
探究SpringBoot启动时实现自动执行代码
目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现,当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下,在这些位置执行的区别以及加载顺序。原创 2023-06-23 23:39:58 · 415 阅读 · 0 评论 -
Spring Boot 定时任务单线程和多线程@Scheduled
看到控制台输出的结果,所有的定时任务都是通过一个线程来处理的,我估计是在定时任务的配置中设定了一个SingleThreadScheduledExecutor,于是我看了源码,从ScheduledAnnotationBeanPostProcessor类开始一路找下去。从控制台输入的结果中我们可以看出所有的定时任务都是在同一个线程池用同一个线程来处理的,那么我们如何来并发的处理各定时任务呢,请继续向下看。(4)fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms;原创 2023-06-22 22:56:49 · 791 阅读 · 0 评论 -
SpringBoot——开启Druid监控统计功能(SQL监控、慢SQL记录、Spring监控、去广告)
这个过滤器,作用就是统计 web 应用请求中所有的数据库信息,比如 发出的 sql 语句,sql 执行的时间、请求次数、请求的 url 地址、以及seesion 监控、数据库表的访问次数 等等。是当前DataSource配置的基本信息,上述配置的Filter可以在里面找到,如果没有配置Filter(一些信息会无法统计,例如“SQL监控”,会无法获取JDBC相关的SQL执行信息)Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。转载 2023-06-22 13:37:21 · 7312 阅读 · 0 评论