
SpringBoot
文章平均质量分 82
程序猿DD
《Spring Cloud微服务实战》作者、腾讯云TVP、阿里云MVP
展开
-
Spring Boot发布2.6.2、2.5.8:升级log4j2到2.17.0
12月22日,Spring官方发布了Spring Boot 2.5.8(包括46个错误修复、文档改进和依赖项升级)和2.6.2(包括55个错误修复、文档改进和依赖项升级)。这两个版本均为缺陷修复版本,值得注意的是再这两个版本中更新了最近困扰大家的log4j2版本升级,如果正在使用log4j2的小伙伴,可以做此升级。2.6.2版本内容用户已经可以通过下面的Maven坐标获取2.6.2的依赖:<parent> <groupId>org.springframework.boot原创 2021-12-22 10:34:29 · 2510 阅读 · 2 评论 -
为什么加上<log4j2.version>配置就可以更新log4j2的版本?
最近log4j2的核弹级漏洞席卷了大部分互联网公司,升级版本成了这两周的核心任务。对于要升级到什么版本,最新版本2.16.0是最佳选择。那么如何快速升级,之前也给出了Spring Boot项目升级版本的最简方法。大家只需要使用这样的简单配置,就可以把log4j2一系列包的版本都升级了。如果这种方法不行,注意加了配置之后要reload下。另外,如果你不是Spring Boot项目,或者是通过其他方式引入的log4j2,那么需要单独处理,或者在你项目的根依赖里,直接写上log4j2的依赖并设置版本为2.原创 2021-12-17 12:57:23 · 2970 阅读 · 4 评论 -
Log4j2再发新版本2.16.0,完全删除Message Lookups的支持,加固漏洞防御
昨天,Apache Log4j 团队再次发布了新版本:2.16.0 !2.16.0 更新内容默认禁用JNDI的访问,用户需要通过配置log4j2.enableJndi参数开启默认允许协议限制为:java、ldap、ldaps,并将ldap协议限制为仅可访问Java原始对象Message Lookups被完全移除,加固漏洞的防御更多更新细节,可以通过官网查看:https://logging.apache.org/log4j/2.x/如果您正在学习Spring Boot,那么推荐一个连载多年还在继原创 2021-12-15 09:48:19 · 3164 阅读 · 2 评论 -
《Spring Boot免费教程》连载目录
专题目标:打造全网最全、比收费教程更好的Spring Boot免费教程!如何支持:关注我的公众号”程序猿DD“,第一时间获得更新推送!把该页面分享给更多的朋友教程目录本教程内容持续更新连载中…Star关注支持一下,随时获得更新信息!快速入门Spring Boot 2.x基础教程:版本关系Spring Boot 2.x基础教程:快速入门Spring Boot 2.x基础教程:工程结构推荐配置详解Spring Boot 2.x基础教程:配置文件详解Spring Boot 2.x原创 2021-12-05 22:05:19 · 672 阅读 · 1 评论 -
Spring Boot 2.6.0正式发布:默认禁止循环依赖、增强Docker镜像构建...
昨天,Spring官方正式发布了Spring Boot今年最后一个特性版本:2.6.0同时,也宣布了2.4.x版本的终结。那么这个新版本又带来了哪些新特性呢?下面就一起跟着DD来看看吧!重要特性1. Servlet应用支持在 Cookie 中配置 SameSite 属性该属性可通过server.session.cookie.same-site属性来配置,共有三个可选值:Strict 严格模式,必须同站请求才能发送 cookieLax 宽松模式,安全的跨站请求可以发送 cookieNone.原创 2021-11-20 09:30:00 · 8644 阅读 · 8 评论 -
使用 @Transactional 时常犯的N种错误
@Transactional是我们在用Spring时候几乎逃不掉的一个注解,该注解主要用来声明事务。它的实现原理是通过Spring AOP在注解修饰方法的前后织入事务管理的实现语句,所以开发者只需要通过一个注解就能代替一系列繁琐的事务开始、事务关闭等重复性的编码任务。编码方式确实简单了,但也因为隐藏了直观的实现逻辑,一些错误的编码方法可能会让@Transactional注解失效,达不到事务的作用。最直接的表现就是:方法执行过程中抛出了异常,但事务没有回滚,最终导致了脏数据的产生。之前我在博客上也写过一篇原创 2021-11-16 10:49:30 · 2839 阅读 · 3 评论 -
Spring Boot中使用PostgreSQL数据库
在如今的关系型数据库中,有两个开源产品是你必须知道的。其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的。而今天我们将介绍另外一个开源关系型数据库:PostgreSQL,以及在Spring Boot中如何使用。PostgreSQL简介在学习PostgreSQL的时候,我们总是会将其与MySQL放一起来比较:MySQL自称是最流行的开源数据库,而PostgreSQL则标榜自己是最先进的开源数据库,那么有多先进呢?下面就原创 2021-10-09 09:33:13 · 11721 阅读 · 0 评论 -
Spring Boot 2.4 对多环境配置的支持更改
在目前最新的Spring Boot 2.4版本中,对配置的加载机制做了较大的调整。相关的问题最近也被问的比较多,所以今天就花点时间,给大家讲讲Spring Boot 2.4的多环境配置较之前版本有哪些变化。多环境配置2.4版本之前先回顾下,2.4版本之前,我们在yaml配置文件中,使用spring.profiles来定义不同环境的标识,比如下面这样:spring: profiles: "dev"name: dev.didispace.com---spring:原创 2020-12-17 09:41:20 · 16702 阅读 · 12 评论 -
为什么IDEA不推荐你使用@Autowired ?
@Autowired注解相信每个Spring开发者都不陌生了!在DD的Spring Boot基础教程和Spring Cloud基础教程中也都经常会出现。但是当我们使用IDEA写代码的时候,经常会发现@Autowired注解下面是有小黄线的,我们把小鼠标悬停在上面,可以看到这个如下图所示的警告信息:那么为什么IDEA会给出Field injection is not recommended这样的警告呢?下面带着这样的问题,一起来全面的了解下Spring中的三种注入方式以及他们之间在各方面的优劣。Sp原创 2021-11-05 11:04:59 · 4246 阅读 · 5 评论 -
Spring Initializr中生成的mvnw是干吗的?
当我们使用Spring Initializr来创建Spring Boot工程的时候,有没有发现在工程根目录下有两个名为mvnw的文件:从命名、图标、扩展名来猜测,这两个文件的作用应该是一样的,只是cmd文件应该是用在windows下跑的,而另外一个则是用于linux环境下跑的。欢迎关注Spring Boot系列免费教程连载「点击进入汇总目录」那么这个文件到底是用来做什么呢?下面我们一起尝试了解一下:第一步:打开读一下因为内容较多,我这里就不放出来了。内容也非常易懂,只要你了解shell和m原创 2021-01-22 09:40:56 · 750 阅读 · 0 评论 -
Spring Boot 2.x基础教程:多个文件的上传
昨天,我们介绍了如何在Spring Boot中实现文件的上传。有读者问:那么如果有多个文件要同时上传呢?这就马上奉上,当碰到多个文件要同时上传的处理方法。动手试试本文的动手环节将基于Spring Boot中实现文件的上传一文的例子之上,所以读者可以拿上一篇的例子作为基础来进行改造,以体会这之间的区别,下面也主要讲解核心区别的地方。第一步:修改文件上传页面的上传表单<!DOCTYPE html><html><head lang="en">原创 2021-01-08 10:26:29 · 12978 阅读 · 0 评论 -
文件上传的单元测试怎么写?
早上有个群友问了一个不错的问题:文件上传的单元测试怎么写?后面也针对后端开发要不要学一下单元测试的话题聊了聊,个人是非常建议后端开发能够学一下单元测试的。所以,今天特地拿出来写一篇说说,并不是因为这有多难写,而是作为出色的后端开发人员,单元测试如果你能考虑周到,那么从代码结构,程序质量上都会有很大的提升。而实际开发过程中,很少有开发人员会特别关注这个方面。言归正传,下面我们具体说说当碰到需要上传文件的接口,我们要如何写单元测试!先来回忆一下,普通接口的单元测试我们是如何写的?看看我们入门例子中的单元测试原创 2021-01-11 10:38:57 · 1263 阅读 · 0 评论 -
聊一聊:MyBatis和Spring Data JPA的选择问题
从个人开发角度来说,Spring Data JPA更好用,是因为开发起来更快。但从团队角度,我们希望更好的维护性,spring data jpa就差一些,或者说对后期人的要求更高。很容易出现这种情况:监控系统发现某个慢查询了,运维把SQL发到开发群里,大家自查一下。此时很可能发现根本没人回应,都说没有这句SQL。然后运维定位到某个库,找到这个库的使用人,让他去看。他可能也就拿着SQL全局去搜,发现还是搜不到。如果这个人责任心不强,可能就说 没找到这个SQL,责任心强调的,对Spring Dat原创 2021-01-15 10:13:17 · 653 阅读 · 0 评论 -
Spring Boot 2.x基础教程:实现文件上传
文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然后再做图片的裁剪,excel数据的解析入库等后续操作。今天通过这篇文章,我们就来一起学习一下如何在Spring Boot中实现文件的上传。动手试试第一步:创建一个基础的Spring Boot项目,如果还不会的话就先看看这篇《快速入门》。第二步:在pom.xml中引入模版引擎依赖:<dependency> <groupId>o原创 2021-01-07 10:46:01 · 674 阅读 · 0 评论 -
Spring Boot 2.x基础教程:配置元数据的应用
在使用Spring Boot开发应用的时候,你是否有发现这样的情况:自定义属性是有高量背景的,鼠标放上去,有一个Cannot resolve configuration property的配置警告。如果不对于这个警告觉得烦,想要去掉,那么可以通过设置来去除:但是,我的建议是不要去掉,因为这个警告正好可以通过高亮来区分你的自定义配置以及框架配置,可以让你快速的分辨哪些是自定义的。如果你实在想去掉,那么也不建议用上面说的方法,而是建议通过完善配置元数据的方式来完成。所以,今天就来具体说说配置元数据的应原创 2021-01-20 10:32:29 · 957 阅读 · 0 评论 -
Spring Boot 2.x基础教程:使用Flyway管理数据库版本
之前已经介绍了很多在Spring Boot中使用MySQL的案例,包含了Spring Boot最原始的JdbcTemplate、Spring Data JPA以及我们国内最常用的MyBatis。同时,对于一些复杂场景比如:更换Druid数据源,或是多数据源的情况也都做了介绍。不论我们使用哪一个具体实现框架,都离不开对数据库表结构的管理。而这一类管理一直都存在一个问题:由于数据库表元数据存储于数据库中,而我们的访问逻辑都存在于Git或其他代码仓库中。Git已经帮助我们完成了代码的多版本管理,那么数据库中的表原创 2021-01-12 09:45:02 · 11370 阅读 · 5 评论 -
Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应
在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理。那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一个对象呢?实现原理:消息转换器(Message Converter)在扩展上述问题之前,我们先要知道Spring Boot中处理HTTP请求的实现是采用的Spring MVC。而在Spring MVC中有一个消息转换器这个概念,它主要负责处理各种不同格式的请求数据进行处理,并包转换成对象,以提供更好的原创 2021-06-25 10:28:46 · 606 阅读 · 0 评论 -
遇到 Request header is too large,你是如何解决的?
看到群里有小伙伴问,这个异常要怎么解决:java.lang.IllegalArgumentException: Request header is too large异常原因根据Exception MessageRequest header is too large,就可以判断这个错误原因是HTTP请求头过大导致的。本文首发程序猿DD博客,欢迎收藏关注!如何解决解决方法主要两个方向:方向一: 配置应用服务器使其允许的最大值 > 你实用实用的请求头数据大小如果用Spring Boot的话原创 2021-06-03 09:33:39 · 4103 阅读 · 1 评论 -
Spring Boot 2.5.0 重新设计的spring.sql.init 配置有啥用?
前几天Spring Boot 2.5.0发布了,其中提到了关于Datasource初始化机制的调整,有读者私信想了解这方面做了什么调整。那么今天就要详细说说这个重新设计的配置内容,并结合实际情况说说我的理解和实践建议。弃用内容先来纠正一个误区。主要之前在版本更新介绍的时候,存在一些表述上的问题。导致部分读者认为这次的更新是Datasource本身初始化的调整,但其实并不是。这次重新设计的只是对Datasource脚本初始化机制的重新设计。先来看看这次被弃用部分的内容(位于org.springframe原创 2021-05-24 10:13:42 · 1925 阅读 · 0 评论 -
Spring Boot 2.x基础教程:使用Redis的发布订阅功能
通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K、V存储的高性能缓存。接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦!发布订阅模式如果你看过之前我写的关于MQ的相关文章,那么对于发布订阅功能应该不会陌生。如果没看过,那也不要紧,这里先做一个简单介绍,已经了解的可以跳过直接看下一节内容。什么是发布订阅模式?在发布订阅模式中有个重要的角色,一个是发布者Publisher,另一个订阅者Subscriber。本质上来说,发布订阅模原创 2021-06-28 10:30:11 · 591 阅读 · 0 评论 -
Spring Boot 2.x基础教程:使用MongoDB
前段时间因为团队调整,大部分时间放在了团队上,这系列的更新又耽误了一下。但既然承诺持久更新,那就不会落下,今天开始继续更新这部分的内容!过了年,重申一下这个系列的目标:目前主要任务就是把Spring Boot 1.x部分没有升级的内容做完升级。我会将因为版本升级而产生的变化做一些说明,这样不论低版本的读者还是高版本的读者都能找到自己想要的部分。这也是这次做2.x版本升级的重要原因,尽量避免或减少有读者用着高版本参考我这边低版本的实现而出现问题,然后开始问候我家人的情况。在完成上述所有的更新之后,接下来很原创 2021-03-04 10:24:49 · 780 阅读 · 1 评论 -
Spring Boot 2.5.0 发布:支持Java16、Gradle 7、Datasource初始化机制调整
今年520的事情是真的多,娱乐圈的我们不管,就跟DD一起来看看 Spring Boot 2.5.0 的发布吧!看看都带来了哪些振奋人心的新特性和改动!主要更新支持 Java 16支持 Gradle 7支持 Jetty 10增强 Docker 镜像的构建更新了Datasource的初始化机制除了框架功能更新之后,该版本在文档方面也顺应时代潮流,增加了暗黑模式的支持!长这样,是你喜欢的阅读模式吗?其他更新management.endpoints.web.cors.allowed-or原创 2021-05-22 11:12:00 · 4525 阅读 · 3 评论 -
Spring Boot 2.x基础教程:使用LDAP来管理用户与组织数据
很多时候,我们在做公司系统或产品时,都需要自己创建用户管理体系,这对于开发人员来说并不是什么难事,但是当我们需要维护多个不同系统并且相同用户跨系统使用的情况下,如果每个系统维护自己的用户信息,那么此时用户信息的同步就会变的比较麻烦,对于用户自身来说也会非常困扰,很容易出现不同系统密码不一致啊等情况出现。如果此时我们引入LDAP来集中存储用户的基本信息并提供统一的读写接口和校验机制,那么这样的问题就比较容易解决了。尤其在一些内部管理系统的开发和搭建时,往往我们的内部系统一开始并不全是自己开发的,还有很多第.原创 2021-06-18 16:40:27 · 1369 阅读 · 0 评论 -
Spring Boot 2.x基础教程:使用JTA实现多数据源的事务管理
在一个Spring Boot项目中,连接多个数据源还是比较常见的。之前也介绍了如何在几种常用框架的场景下配置多数据源,具体可见:Spring Boot 2.x基础教程:JdbcTemplate的多数据源配置Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置Spring Boot 2.x基础教程:MyBatis的多数据源配置当我们采用多数据源的时候,同时也会出现一个这样的特殊场景:我们希望对A数据源的更新和B数据源的更新具备事务性。这样的例子很常见,比如:在订单库原创 2021-02-03 15:47:55 · 1030 阅读 · 0 评论 -
JPA事务中的异常最后不也抛出了,为什么没被catch到而导致回滚?
上周,我们通过这篇文章《为什么catch了异常,但事务还是回滚了?》来解释了,之前test4为什么会回滚的原因。但还是收到了很多没有理解的反馈,主要是根据前文给出的线索去跟踪,是获得到了回滚的标示和异常,而让大家不理解的是,javax.validation.ConstraintViolationException异常不是最后也向外抛出了,那么为什么test4里catch没有能够捕获到呢?其实这个问题并不难解释,下面就通过这篇文章,做个小实验,帮助大家进一步理解大家的这个疑问!如果你还不了解这篇文章在讨原创 2021-07-09 13:05:31 · 677 阅读 · 0 评论 -
为什么catch了异常,但事务还是回滚了?
前几天我发了这篇文章《我来出个题:这个事务会不会回滚?》得到了很多不错的反馈,也有不少读者通过微信、群或者邮件的方式,给了我一些关于test4的回复。其中还有直接发给我测试案例,来证明我的答案是错的。今天,我们就来一起看看test4这个争议很大的问题。如果您是刚打开这篇文章,不了解我们在讨论啥,那可以先点击查看之前的这篇《我来出个题:这个事务会不会回滚?》。通过这两篇文章的解析,相信你会对Spring Data JPA下的事务执行机制有质的飞跃。为什么没回滚先来说说,那些写了代码验证"不会回滚原创 2021-07-02 13:01:55 · 4811 阅读 · 3 评论 -
Spring官方发布新成员:Spring GraphQL
近日,在GraphQL Java诞生6周年的时候,Spring社区通过博客宣布正式创建全新项目:Spring GraphQL,同时还发布了这个新项目的里程碑1.0版本。博客原文:https://spring.io/blog/2021/07/06/hello-spring-graphql该项目的任务是将GraphQL Java集成入Spring生态,而这个项目的开发工作将由双方两个团队共同承担。什么是 GraphQL?纵使GraphQL在国外开始就被炒的火热,但到了国内就跟Hibernate、JPA一原创 2021-07-08 10:01:59 · 2483 阅读 · 8 评论 -
这几个事务案例会回滚吗?最后一个90%的人判断错了...
下面这个问题源于前几日在我们的Spring技术交流群里,一个群友提出的关于事务回滚的疑问。在讨论过程中,我尝试去复现群友提出的问题场景,发现了另外一个可能让大家会迷惑的情况。当时在群里说了结果和原因,但微信群范围有限,所以单独写篇文章,拿出来给大家看看,顺便考考大家,对这块是否了解。问题描述这个问题的基础工程我用了之前Spring Boot 2.x基础教程中《使用Spring Data JPA访问MySQL》的案例。你可以通过下面仓库中的chapter3-4目录获取基础工程:Github:ht原创 2021-06-30 09:48:22 · 1384 阅读 · 0 评论 -
Spring Boot中使用@Async的时候,千万别忘了线程池的配置!
上一篇我们介绍了如何使用@Async注解来创建异步任务,我可以用这种方法来实现一些并发操作,以加速任务的执行效率。但是,如果只是如前文那样直接简单的创建来使用,可能还是会碰到一些问题。存在有什么问题呢?先来思考下,下面的这个接口,通过异步任务加速执行的实现,是否存在问题或风险呢?@RestControllerpublic class HelloController { @Autowired private AsyncTasks asyncTasks; @GetMapping(原创 2021-09-16 12:15:57 · 1664 阅读 · 0 评论 -
Spring Boot中使用@Async实现异步调用,加速任务的执行!
什么是“异步调用”?“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。同步调用下面通过一个简单示例来直观的理解什么是同步调用:定义Task类,创建三个处理函数分别模拟三个执行任务的操作,操作消耗时间随机取(10秒内)@Slf4j@Componentpublic class AsyncTasks { public static Random r原创 2021-09-14 12:31:47 · 411 阅读 · 0 评论 -
Spring Boot 2.x基础教程:使用Elastic Job实现定时任务
上一篇,我们介绍了如何使用Spring Boot自带的@Scheduled注解实现定时任务。文末也提及了这种方式的局限性。当在集群环境下的时候,如果任务的执行或操作依赖一些共享资源的话,就会存在竞争关系。如果不引入分布式锁等机制来做调度的话,就可能出现预料之外的执行结果。所以,@Scheduled注解更偏向于使用在单实例自身维护相关的一些定时任务上会更为合理一些,比如:定时清理服务实例某个目录下的文件、定时上传本实例的一些统计数据等。那么,在实际实现业务逻辑的时候,没有更好的定时任务方案呢?今天我们就来介原创 2021-07-22 10:51:13 · 610 阅读 · 0 评论 -
使用Elastic Job的时候报“Job conflict with register center”,如何处理?
昨天,有群友反应根据之前这篇《使用Elastic Job实现定时任务》文章编写测试定时任务的时候,报了类似下面的这个错误:Caused by: org.apache.shardingsphere.elasticjob.infra.exception.JobConfigurationException: Job conflict with register center. The job 'my-simple-job' in register center's class is &#原创 2021-07-30 11:00:29 · 2898 阅读 · 0 评论 -
使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt
前几天分享了一篇《Spring Boot 2.x基础教程:加密配置中的敏感信息》 ,然后看到群里有小伙伴反应跟着这篇文章出现了这个异常com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Unable to decrypt。具体完整的错误信息如下:Caused by: com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Unable to decr原创 2021-08-24 11:55:24 · 4193 阅读 · 0 评论 -
Spring Boot中如何配置线程池拒绝策略,妥善处理好溢出的任务
通过之前三篇关于Spring Boot异步任务实现的博文,我们分别学会了用@Async创建异步任务、为异步任务配置线程池、使用多个线程池隔离不同的异步任务。今天这篇,我们继续对上面的知识进行完善和优化!如果你已经看过上面几篇内容并已经掌握之后,一起来思考下面这个问题:假设,线程池配置为核心线程数2、最大线程数2、缓冲队列长度2。此时,有5个异步任务同时开始,会发生什么?场景重现我们先来把上面的假设用代码实现一下:第一步:创建Spring Boot应用,根据上面的假设写好线程池配置。@Enab原创 2021-09-23 14:39:45 · 4045 阅读 · 0 评论 -
Spring Boot 配置中的敏感信息如何保护?
在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用、随机数的应用、命令行参数的使用、多环境的配置管理等等。这些配置相关的知识都是Spring Boot原生就提供的,而今天我们将介绍的功能并非Spring Boot原生就支持,但却非常有用:配置内容的加密。为什么要加密?可能很多初学者,对于配置信息的加密并不敏感,因为开始主要接触本地的开发,对于很多安全问题并没有太多的考虑。而现实中,我们的配置文件中,其实包含着大量与安全相关的敏感信息,比如:数原创 2021-08-16 09:45:45 · 502 阅读 · 0 评论 -
Spring Boot 2.x基础教程:使用@Scheduled实现定时任务
我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。创建定时任务在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置@SpringBootApplication@EnableSchedulingpublic cl原创 2021-07-15 10:28:11 · 469 阅读 · 0 评论 -
Spring Boot中有多个@Async异步任务时,记得做好线程池的隔离!
通过上一篇:配置@Async异步任务的线程池的介绍,你应该已经了解到异步任务的执行背后有一个线程池来管理执行任务。为了控制异步任务的并发不影响到应用的正常运作,我们必须要对线程池做好相应的配置,防止资源的过渡使用。除了默认线程池的配置之外,还有一类场景,也是很常见的,那就是多任务情况下的线程池隔离。什么是线程池的隔离,为什么要隔离可能有的小伙伴还不太了解什么是线程池的隔离,为什么要隔离?。所以,我们先来看看下面的场景案例:@RestControllerpublic class HelloContro原创 2021-09-18 10:04:26 · 1143 阅读 · 0 评论 -
使用Elastic Job的分片配置加速任务执行和提高资源利用率
上一篇,我们介绍了如何使用Elastic Job实现定时任务。解决了使用@Scheduled来实现时候存在的竞争问题,同时也实现了定时任务的高可用执行。然而,还有一类问题是我们在做定时任务时候容易出现的,就是任务执行速度时间过长;同时,为了实现定时任务的高可用,还启动了很多任务实例,但每个任务执行时候就一个实例在跑,资源利用率不高。所以,接下来我们就来继续介绍,使用Elastic Job的分片配置,来为任务执行加加速,资源利用抬抬高的目标!动手试试建议直接下载文末仓库中的chapter7-2工程,然原创 2021-07-28 15:08:01 · 460 阅读 · 0 评论 -
Spring Boot中使用时序数据库InfluxDB
除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB、LDAP这些存储的案例。接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在Spring Boot中的使用。InfluxDB简介什么是时序数据库?全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,这些工业原创 2021-08-03 15:34:24 · 1203 阅读 · 0 评论 -
Spring Boot 2.x基础教程:MyBatis的多数据源配置
前两天,我们已经介绍了关于JdbcTemplate的多数据源配置以及Spring Data JPA的多数据源配置,接下来具体说说使用MyBatis时候的多数据源场景该如何配置。添加多数据源的配置先在Spring Boot的配置文件application.properties中设置两个你要链接的数据库配置,比如这样:spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1spring.datasource.primary.原创 2020-06-26 09:53:57 · 1909 阅读 · 1 评论