跳至主要內容
Spring Boot 3.2发布:大量Java 21的支持上线,改进可观测性

Spring Boot 3.2发布:大量Java 21的支持上线,改进可观测性

就在今天凌晨,Spring Boot 3.2正式发布了!该版本是在Java 21正式发布之后的重要支持版本,所以在该版本中包含大量对Java 21支持的优化。

下面,我们分别通过Spring官方发布的博文和Josh Long长达80+分钟的介绍视频,一起认识一下Spring Boot 3.2最新版本所带来的全新内容。

  • 官方博文:https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now
  • Josh Long的视频:https://www.youtube.com/watch?v=dMhpDdR6nHw

程序猿DD原创大约 5 分钟Spring Boot前沿资讯Spring Boot
Spring Boot中使用邮件模版发送邮件

Spring Boot中使用邮件模版发送邮件

通常我们使用邮件发送服务的时候,都会有一些固定的场景,比如:重置密码、注册确认等,给每个用户发送的内容可能只有小部分是变化的。

所以,很多时候我们会使用模板引擎来为各类邮件设置成模板,这样我们只需要在发送时去替换变化部分的参数即可。

在Spring Boot中使用模板引擎来实现模板化的邮件发送也是非常容易的,下面我们以velocity为例实现一下。

引入velocity模块的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-velocity</artifactId>
</dependency>

程序猿DD原创大约 2 分钟Spring BootSpring Boot
Spring Boot发送邮件的时候引入图片等静态资源

Spring Boot发送邮件的时候引入图片等静态资源

有时候我们发送邮件的时候,除了需要添加附件之外,可能还希望通过嵌入图片等静态资源,让邮件获得更好的阅读体验,而不是从附件中查看具体图片。

所以,下面一起来学习一下如何通过MimeMessageHelper实现在邮件正文中嵌入静态资源。

	@Test
	public void sendInlineMail() throws Exception {

		MimeMessage mimeMessage = mailSender.createMimeMessage();

		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
		helper.setFrom("dyc87112@qq.com");
		helper.setTo("dyc87112@qq.com");
		helper.setSubject("主题:嵌入静态资源");
		helper.setText("<html><body><img src=\"cid:weixin\" ></body></html>", true);

		FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
		helper.addInline("weixin", file);

		mailSender.send(mimeMessage);

	}

程序猿DD原创小于 1 分钟Spring BootSpring Boot
Spring Boot发送带附件的邮件

Spring Boot发送带附件的邮件

上一篇,我们通过使用SimpleMailMessage实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件、或是使用邮件模块等。这个时候我们就需要使用MimeMessage来设置复杂一些的邮件内容,下面我们就来依次实现一下。

发送附件邮件

在上面单元测试中加入如下测试用例(通过MimeMessageHelper来发送一封带有附件的邮件):


程序猿DD原创小于 1 分钟Spring BootSpring Boot
使用JavaMailSender发送邮件

使用JavaMailSender发送邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。

快速入门

在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖:


程序猿DD原创大约 2 分钟Spring BootSpring Boot
Spring Boot虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较

Spring Boot虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较

早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,我就不翻译了,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。

测试场景

作者采用了一个尽可能贴近现实操作的场景:

  1. 从授权头信息中提取JWT
  2. 验证JWT并从中提取用户的Email
  3. 使用用户的Email去MySQL里执行查询
  4. 返回用户记录

程序猿DD原创大约 5 分钟Spring Boot前沿资讯Spring Boot性能测试
Spring Boot通过企业邮箱发邮件被Gmail退回的问题解决方法

这两天给我们开发的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 users, and has been blocked. The sender must authenticate with at least one of SPF or DKIM. For this message, DKIM checks did not pass and SPF check for [mail.spring4all.com] did not pass with ip: [54.204.34.130]. The sender should visit https://support.google.com/mail/answer/81126#authentication for instructions on setting up authentication. k191-20020a636fc8000000b00565bcd33890si6279798pgc.848 - gsmtp (in reply to end of DATA command) 解决方案:请通知你的邮箱管理员为邮箱域名设置正确的DNS(SPF、DKIM、DMARC)记录。详细请见 http://service.exmail.qq.com/cgi-bin/help?subtype=1&&no=1000580&&id=20012 。


程序猿DD原创大约 3 分钟Spring BootSpring Boot
你的Spring Boot应用启动很慢?不妨试试这个工具!

睡不着闲逛,在GitHub上看到一个不错的开源项目:Spring Startup Analyzer

从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具。Spring Startup Analyzer通过采集Spring应用启动过程的数据,进而生成一个交互式的分析报告,帮助用户发现Spring应用启动慢的位置。同时,Spring Startup Analyzer还提供了Spring Bean异步初始化的工具,来帮助开发者加快Spring应用的启动时间。

下面一起来看看其提供的强大功能。

分析能力


程序猿DD原创大约 5 分钟Spring BootSpringSpring Boot开源
基于Spring Boot 3的开源培训系统,学习和自用都不错

一个好企业,应该有完善的个人成长体系。每一个员工在为公司付出的时候,个人也能不断的成长。相信这是每个打工人希望遇到的,但要做好这一切并不容易。

如果您正在搭建公司的成长培训体系,那么今天的推荐也许可以助你一臂之力!

今天要推荐的开源项目名为:PlayEdu

这是一款适用于搭建内部培训平台的开源系统,旨在为企业/机构打造自己品牌的内部培训平台。

PlayEdu 基于 Java + MySQL 开发,采用前后端分离模式,前台采用 React18 为核心框架,后台采用 SpringBoot3 为核心框架。


TJ君原创大约 1 分钟Spring BootSpring Boot
2
3
4
5
...
23