Spring Boot

这两天给我们开发的Chrome插件:Youtube中文配音增加了账户注册和登录功能,其中有一步是邮箱验证,所以这边会在Spring Boot后台给用户的邮箱发个验证信息。如果发邮件,之前的文章教程里就有,这里就不说了,着重说说这两天发现所有用Gmail注册的用户都被退件的问题。 报错现象先来看看具体报错(如果您也碰到这种情况,那么可以看看后面的内容): 退信原因:发件人(youtubedubbing@mail.spring4all.com)域名的DNS记录未设置或设置错误导致对方拒收此邮件。host gmail-smtp-in.l.google.com[142.251.10.26] said: 550-5.7.26 This mail is unauthenticated, which poses a security risk to the sender and Gmail us...

睡不着闲逛,在GitHub上看到一个不错的开源项目:Spring Startup Analyzer。 从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具。Spring Startup Analyzer通过采集Spring应用启动过程的数据,进而生成一个交互式的分析报告,帮助用户发现Spring应用启动慢的位置。同时,Spring Startup Analyzer还提供了Spring Bean异步初始化的工具,来帮助开发者加快Spring应用的启动时间。 下面一起来看看其提供的强大功能。 分析能力我们可以先从该项目中给出HTML样例报告(点击这里查看)来看看它所提供的分析功能。 把报告内容的细节部分都收起来,可以看到如下图所示的内容: 主要有六个部分: 启动的统计数据。其中包括:启动时间、Bean的数量、使用/总共的JAR包数量、未使用/总共的JAR包数量、C...

一个好企业,应该有完善的个人成长体系。每一个员工在为公司付出的时候,个人也能不断的成长。相信这是每个打工人希望遇到的,但要做好这一切并不容易。 如果您正在搭建公司的成长培训体系,那么今天的推荐也许可以助你一臂之力! 今天要推荐的开源项目名为:PlayEdu 这是一款适用于搭建内部培训平台的开源系统,旨在为企业/机构打造自己品牌的内部培训平台。 PlayEdu 基于 Java + MySQL 开发,采用前后端分离模式,前台采用 React18 为核心框架,后台采用 SpringBoot3 为核心框架。 功能体验该开源项目提供了体验版DEMO,感兴趣的小伙伴可以直接通过下面的链接体验一下该项目的功能: 学员端入口:https://demo.playedu.xyz,账号:1@playedu.xyz 密码;123123 管理端入口:https://admin.playedu.xyz,账号:...

在最近发布的Spring 6.1 M2版本中,推出了一个全新的同步HTTP客户端:RestClient。用一句话来让Spring开发者认识RestClient的话:像WebClient一样具备流畅API的RestTemplate。所以,RestClient的使命就是淘汰已经有14年历史的RestTemplate。 关于WebClient和RestTemplate,之前在几种服务消费方式(RestTemplate、WebClient、Feign)这篇文章中有详细的介绍。如果您有一定的了解,那么对于RestClient一定可以快速上手。 RestClient案例下面我们通过几个官方给出的案例一起来快速的认识一下RestClient。 HTTP请求下面是一个最简单的GET请求,返回一个字符串。从这个例子中,我们可以看到API形式跟WebClient类似。不像以前用RestTemplate的...

今天给大家说说Spring Boot的自带工具类。 Spring Boot作为一个快速开发框架,其自带的工具类是开发过程中不可或缺的一部分。这些工具类的高效和实用性,能够大大提高开发人员的工作效率。在本文中,我们将重点介绍Spring Boot自带的工具类,帮助开发者更好地利用它们,提高开发效率。 断言 断言是一个逻辑判断,用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 // 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null)...

在今年2月14日的时候,Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器。其中包括Spring Security和Spring Boot的适配器,这意味着今后Keycloak团队将不再提供针对Spring Security和Spring Boot的集成方案。但是,如此强大的Keycloak,还要用怎么办呢?本文就来聊聊,在最新的Spring Boot 3.1版本之下,如何将Keycloak和Spring Security一起跑起来。 准备工作这里所采用的框架与工具版本信息如下: Spring Boot 3.1.0 Keycloak 21.1.1 如果您采用的是其他版本,本文内容不一定有效,但可以作为参考。 配置Keycloak第一步:为Spring Boot应用创建Realm,并在下面创建一个Client 第二步:创建一个SYS_ADMIN角色,...

Spring Boot 3.1.0 现已发布,此版本添加了大量新功能和改进。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.0</version> <relativePath/> <!-- lookup parent from repository --></parent> 亮点 Spring Authorization Server 的自动配置 支持在开发时使用 Testcontainers 和 Docker Compose 管理外部服务 简化集成测试中 Testcon...

在前几天分享的关于Spring Boot Starter中的spring.factories文件不再推荐使用的视频下,看到有网友问了这样一个问题: 这个文件也是位于/META-INF/目录下面: 里面的大概是这样的: { "groups": [ { "name": "swagger", "type": "com.spring4all.swagger.SwaggerProperties", "sourceType": "com.spring4all.swagger.SwaggerProperties" }, { "name": "swagger.authorization", "type": "com.spring4all.swagger.SwaggerAuthor...

前段时间看到群里有吐槽swagger整合问题,当时没仔细看,总以为是姿势不对。 这两天正好自己升级Spring Boot版本,然后突然出现了这样的一个错误: Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWra...

昨晚我们讲了Spring Boot 2.7开始不再推荐使用spring.factories了,今天早上公众号(程序猿DD)上也推了,然后收到了不少反馈。其中有个网友说:要维护两个文件,太麻烦了。 作为一名优秀的程序员,当觉得麻烦的时候,第一反应就是要想办法偷懒! 所以,今天就给大家讲讲怎么样轻松的维护这两个文件! 开源项目:mica-auto为了解决维护麻烦的问题,这里要给大家推荐一个开源项目:mica-auto。不要看Star不多,DD用下来感觉还是非常好的。 GitHub地址:https://github.com/lets-mica/mica-auto 该项目的实现原理与Lombok类似,利用Java 6就开始支持的Annotation Processor,在编译期扫描注解和处理注解。这里mica-auto的主要解决问题是为Spring Boot自动生成spring.fac...

如果你是Spring Boot用户的话,一定有这样的开发体验,当我们要引入某个功能的时候,只需要在maven或gradle的配置中直接引入对应的Starter,马上就可以使用了,而不需要像传统Spring应用那样写个xml或java配置类来初始化各种Bean。 如果你有探索过这些Starter的原理,那你一定知道Spring Boot并没有消灭这些原本你要配置的Bean,而是将这些Bean做成了一些默认的配置类,同时利用/META-INF/spring.factories这个文件来指定要加载的默认配置。 这样当Spring Boot应用启动的时候,就会根据引入的各种Starter中的/META-INF/spring.factories文件所指定的配置类去加载Bean。 而这次刚发布的Spring Boot 2.7中,有一个不推荐使用的内容就是关于这个/META-INF/spring....

昨晚(5月19日),Spring Boot官方发布了一系列Spring Boot的版本更新,其中包括: Spring Boot 3.0.0-M3 Spring Boot 2.7.0 Spring Boot 2.6.8 Spring Boot 2.5.14 Spring Boot 3.0.0-M3此版本包括74个bug修复、文档改进和依赖项升级,其中值得注意的新功能包括: Micrometer Observation、Tracing和OtlpMeterRegistry的自动化配置支持 恢复对REST Assured和Pooled JMS的支持 Spring Boot 2.7.02.7.0是2.x版本的一个重要的新特性版本,在该版本中有这些亮点可以关注一下: 增加了Spring GraphQL的自动化配置和Metrics 增加@DataCoubaseTest和@DataElas...

大家好,我是DD! 今天跟大家聊聊这个问题:ApplicationStartedEvent与ContextStartedEvent有区别吗? 对了,最近花了几周时间,把SpringForAll社区 3.0上线了,社区的建设目标与之前一样,希望能够构建一个垂直于Java开发者的高质量技术社区!目前,已经有接近1000名注册用户,每天也有不少读者会发布一些帖子,技术氛围已经初步形成。如果你正在学习Java、Spring,你可以在这里分享你的见解,碰到的问题以及帮助别人解决问题。后面,我会持续精选一些,我觉得有意思的问题,在这里继续给大家分享一下! 关于这个问题,其实就是Spring和Spring Boot事件机制的理解。 虽然Spring Boot的基础是Spring,但Spring Boot并没有直接使用Spring中定义的常用事件,而是重新定义了一批。 它们都是继承自Sprin...

在 Kubernetes 中部署 Spring Boot 应用整体上来说是一件比较繁琐的事情,而 Spring Boot Operator 则能带给你更清爽简单的体验。 Spring Boot Operator 基于 Kubernetes 的 Custom Resource Definitions (CRDs) 扩展 API 进行的开发。 1. 打包 Docker 镜像在讲部署之前我们需要先将我们的 Spring Boot 应用打包成标准的 Docker Image。 Java 项目打包镜像用 Maven/Gradle 插件比较多,这里在介绍一个新的 Google 开源插件 Jib,该插件使用起来比较方便。 注意:Jib 打包的镜像会导致 Java 应用的 pid=1。在使用 Spring Boot Operator 进行发布时候,Operator 会设置 Kubernetes 的 ...

tinylog简介tinylog,与其他各种tiny开头的东西一样,是一个轻量级的开源日志解决方案。它本身只包含两个JAR文件(一个用于API,另一个用于实现),没有任何外部依赖关系。两个JAR文件的总大小只有178KB。 虽然是一个轻量级级别方案,但我们常用的基本日志管理功能都非常完备,它拥有与其他热门日志框架类似的API设计、多种可配置的日志输出选项、性能方面也是非常的出彩(这是官方给出的Benchmark)。 今天我们就来学习一下,如何在Spring Boot中使用tinylog记录日志。 整合tinylog通过之前Spring Boot 2.x基础教程:使用log4j2记录日志 一文的学习,回忆一下,整合其他日志框架,是不是可以总结为这样几步: 排除Spring Boot默认日志框架依赖 引入要使用的日志框架依赖 加入新日志框架的配置文件 好了,我们就按这个步骤来实战一下...