#Spring Boot

2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1。 下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化: Java基线从 Java 8 提升到了 Java 17这个在最早的Spring Boot 3相关预告中就已经知道了,Java 17将成为未来的主流版本。那么问题来了,大家都把Java 17的升级提上日程了吗?如果你对Java 8之后的各种版本的信息不太了解的话,这里有份 4.6 W 字的总结,或许你可以读一读。 从Java EE APIs 到 Jakarta EESpring Boot 3开始,所有的Java EE Api都需要迁移到Jakarta EE上来。大部分用户需要修改import相关API的时候,要用jakarta替换javax。比如:原来引入javax.servlet.Filter的地方,需...

上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用。今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2。虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班),但不可否认的是Log4j2依然是目前性能最好的日志框架。所以,当Logback性能上无法支撑的时候,替换使用Log4j2还是最为快速便捷的方法。下面,我们就来学习一下如何在Spring Boot 2.x版本中,替换Logback,使用Log4j2记录日志。 动手试一试这里省略Spring Boot项目的基础创建,如果您还不会可以看本教程的快速入门。 下面的操作你可以基于Spring Boot 2.x中默认日志框架Logback一文的例子继续下去,也可以用任何一个Spring Boot 2.x的项目来尝试。 第一步:在pom.xml中引入Log4j2的Starter依赖spring-bo...

Spring Boot在所有内部日志中使用Commons Logging,但是对底层日志的实现是开放的。在Spring Boot生态中,为Java Util Logging 、Log4J2 和Logback 这些常见的日志框架都提供了自动化配置组件,每种Logger都可以通过配置在控制台或者文件中输出日志内容。默认情况下,当我们使用各种Starter的时候,会使用Logback来实现日志管理。 如何记日志在介绍写日志的方式有很多,这里就不对各种方式做罗列了,只讲DD用得最多的方式! 首先,在代码层面,我们不纠结到底用默认的Logback还是Log4j,而是直接用:Slf4j。 为什么不用管具体用Logback还是Log4j就可以去写代码呢?这个就是使用Slf4j好处,为什么是Slf4j?英文全称:Simple Logging Facade for Java,即:简单日志门面,它并不是...

今天遇到一个小伙伴,他给TJ君提了一个小小的建议,如何让代码变得好看 这里指的好看,不是说代码的编写风格,而是指平时TJ君给大家分享项目的时候如何让展示的代码显得好看,是真的字面意思上的好看哦! 小伙伴的意思是,无论在CSDN、博客园、掘金(TJ君在这些地方都有账号,可以一起关注哦),这些分享开源项目的地方,展示的代码都是这个样子的: 虽然实用但是不够美观,他心目中觉得好看的、眼前一亮、让人舒服的代码是这样的: 好吧,之前TJ君是更多的考虑实际运用层级而忽略了美观这一点,所以这就是今天TJ君要和大家分享的项目,carbon 对于经常和大家分享代码的小伙伴来说,carbon可以成为你的好帮手。 carbon是一款将代码转变为优美图案的开源项目,没错上面你看到的特别好看的代码是一副图片哦,想直接拷贝里面内容的话,还是要找源码哦。 抛开这一拷贝使用上的不便,carbon转换出来的美化...

12月22日,Spring官方发布了Spring Boot 2.6.2版本,此版本包括55个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.2</version> <relativePath/> <!-- lookup parent from repository --></parent> 缺陷修复 当getter或setter被子类覆盖属性配置类型,在属性绑定期间使用的getter和setter的时候会有所不同 #29143 Databa...

12月22日,Spring官方发布了Spring Boot 2.5.8版本,此版本包括46个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.8</version> <relativePath/> <!-- lookup parent from repository --></parent> 缺陷修复 DatabaseInitializationDependencyConfigurer触发工厂Bean的饥饿初始化 #28977 当应用程序依赖...

Spring Boot Admin 2.5.5 发布,这是一个错误修正版本。现在可以从 maven 仓库 下载 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.5.5</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> ...

最近log4j2的核弹级漏洞席卷了大部分互联网公司,升级版本成了这两周的核心任务。对于要升级到什么版本,最新版本2.16.0是最佳选择。那么如何快速升级,之前也给出了Spring Boot项目升级版本的最简方法。 大家只需要使用这样的简单配置,就可以把log4j2一系列包的版本都升级了。 如果这种方法不行,注意加了配置之后要reload下。另外,如果你不是Spring Boot项目,或者是通过其他方式引入的log4j2,那么需要单独处理,或者在你项目的根依赖里,直接写上log4j2的依赖并设置版本为2.16.0,强制覆盖其他地方引入的版本。 上面的配置很简单,但还是有读者不清楚为什么这样就可以了: 所以,今天就具体给大家说一下这个配置的原理。 一步步了解为什么下面我会以读代码寻找源头的方式,带你一步步了解这个配置。希望你通过本文除了知道这个问题是为什么,还能学会这种自己探究问...

相信这几天,很多小伙伴都因为Log4j2的史诗级漏洞忙翻了吧? 看到群里还有小伙伴说公司里还特别建了800+人的群在处理… 好在很快就有了缓解措施和解决方案。同时,log4j2官方也是速度影响发布了最新的修复版本。各应用方也可以执行较为稳定的修复方案了。 不过我看到群里发出来的各种修复方法,还真是不好看… 所以这里也提一下Spring Boot用户怎么修复最简单吧。 如果您正在学习Spring Boot,那么推荐一个连载多年还在继续更新的免费教程:http://blog.didispace.com/spring-boot-learning-2x/ 最简修复方式 有些小伙伴其实想到了直接通过Spring Boot的Starter去解决,所以还给Spring Boot提了Issue,希望spring-boot-starter-log4j2可以支持最新的2.15版本(提Issue的时...

11月29日 Spring Boot 2.6.1 正式发布,主要是为了支持本周即将发布的 Spring Cloud 2021。 此版本包括 11 个错误修复和文档改进。 Bug修复 模式分析 PatternParseException 的操作消息中的 matching-strategy 属性的名称不正确#28839 修复 ErrorPageSecurityFilter 部署到 Servlet 3.1 的兼容问题#28790 QuartzDataSourceScriptDatabaseInitiializer 不提供 MariaDB #28779的映射 “test” 和 “Inlined Test Properties” 属性源顺序不正确#28776 在没有 spring-security-web 的 Servlet 应用程序中使用 Spring Security 时出现 Array...

昨天,Spring官方正式发布了Spring Boot今年最后一个特性版本:2.6.0 同时,也宣布了2.4.x版本的终结。 那么这个新版本又带来了哪些新特性呢?下面就一起跟着DD来看看吧! 重要特性1. Servlet应用支持在 Cookie 中配置 SameSite 属性该属性可通过server.session.cookie.same-site属性来配置,共有三个可选值: Strict 严格模式,必须同站请求才能发送 cookie Lax 宽松模式,安全的跨站请求可以发送 cookie None 禁止 SameSite 限制,必须配合 Secure 一起使用 2. 支持为主应用端口和管理端口配置健康组这在 Kubernetes 等云服务环境中很有用。在这种环境下,出于安全目的,为执行器端点使用单独的管理端口是很常见的。拥有单独的端口可能会导致不可靠的健康检查,因为即使健康...

前两篇文章分别体验了Spring Authorization Server的使用。今天来讲讲Spring Authorization Server授权服务器的配置。强烈建议自己手动搭建一次试试,纸上得来终觉浅,深知此事要躬行。提升你的代码量才是提高编程技能的不二法门,这也是本篇教程的意义所在。同时也希望多多点赞,转发,多多支持作者原创分享。 配置依赖首先要创建一个Spring Boot Servlet Web项目,这个不难就不赘述了。集成Spring Authorization Server需要引入: <!-- spring security starter 必须 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>s...

@Transactional是我们在用Spring时候几乎逃不掉的一个注解,该注解主要用来声明事务。它的实现原理是通过Spring AOP在注解修饰方法的前后织入事务管理的实现语句,所以开发者只需要通过一个注解就能代替一系列繁琐的事务开始、事务关闭等重复性的编码任务。 编码方式确实简单了,但也因为隐藏了直观的实现逻辑,一些错误的编码方法可能会让@Transactional注解失效,达不到事务的作用。最直接的表现就是:方法执行过程中抛出了异常,但事务没有回滚,最终导致了脏数据的产生。 之前我在博客上也写过一篇有趣的讨论我来出个题:这个事务会不会回滚?,当时很多人都给出了标准的错误答案,如果没看过的小伙伴不妨进去挑战一下? 虽然之前讨论了一些特殊情况,但还是一直有小伙伴会邮件、微信群里问一些关于事务失效的问题。主要还是@Transactional声明事务失效的情况真的是多种多样!所以,今...

上一篇我们初次体验了Spring Authorization Server,很多粉丝都希望对这个新授权框架有进一步了解。 所以今天我们再进一步再从配置上来了解和OAuth2.0授权服务器相关的过滤器,进而对Spring Authorization Server的整个体系结构作进一步了解。还请多多点赞、转发、再看,这是对胖哥的最大鼓励。 Spring Security的模块化配置在开始之前,我们先来回顾一下上一篇中提到OAuth2.0 Client、Resource Server、Authorization Server目前已经在Spring Security体系中模块化了。 那么它们是如何做到灵活的模块化的呢? 经过对配置的分析我发现了下面的几个相同点。 这是OAuth2.0 Client的核心配置类: public final class OAuth2ClientConfigure...

11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OAuth2.0结束生命周期还有小半年的时间,是时候做出改变了。 目前Spring Authorization Server已经进入生产就绪阶段,是时候学习它了。 今天跟着胖哥的节奏搞一搞Spring Authorization Server授权服务器框架。 目前Spring Security的体系在目前的Spring Security 5.x中将OAuth2.0 Client和OAuth2.0 Resource Server进行了模块化。 Spring Security是一定要引入的。 <dependency> <groupId>org.springframe...