0%

本文译自:An Introduction to Tomcat Servlet Interactions
译者:因特马
邮箱:myz9412@163.com


Tomcat Servlet 功能介绍

阅读全文 »

背景

最近发现项目中有关发送邮件的模块偶尔会阻塞住,导致整个线程阻塞。诡异的是没有捕获到任何异常日志,程序莫名其妙就卡在了 sendMail 上。

后来想到发送邮件的内容过大,可能由于这个原因导致,所以找了一下有关 JavaMail 超时设置的资料。现做整理,顺便聊聊一些小坑。

阅读全文 »

引言

之前发表过一篇 SpringBoot 对 controller 层捕获全局异常并处理的方法(@ControllerAdvice 和 @ExceptionHandler),介绍了如何在 SpringBoot 工程中对 Controller 配置全局异常处理。后来在实际工程中,又有了如下需求:有些接口在发生异常时,需要持久化错误信息,而有的接口则不需要。如果使用了全局异常处理,那每次发生了异常,还需要判断是哪个接口发生的异常,进而选择是否持久化错误日志。那能不能对全局异常进行配置,对不同类型的接口使用不同的全局异常进行处理呢?

经过查阅文档发现,Spring 提供了对 @ControllerAdvice 注解的配置,我们可以通过配置 @ControllerAdvice 指定拦截范围。

阅读全文 »

有关 SpringBoot 邮件服务

Spring Framework 自己有一套基于 JavaMail 的邮件服务包 org.springframework.mail,并通过 JavaMailSender 接口提供了一种简易的发送邮件的方式。这样,开发人员就可以不用操心底层的邮件系统,使用 Spring 提供的接口即可方便地使用邮件服务。官方文档:https://docs.spring.io/spring/docs/5.0.10.RELEASE/spring-framework-reference/integration.html#mail

而在 SpringBoot 中,提供了更为简便的自动配置,又进一步简化了开发人员工作。官方文档:https://docs.spring.io/spring-boot/docs/2.0.6.RELEASE/reference/htmlsingle/#boot-features-email 。下面介绍一下 SpringBoot 中配置邮件服务的具体方法。

阅读全文 »

引言

在开发中,我们会有如下的场景:某个接口中,存在一些业务异常。例如用户输入的参数校验失败、用户名密码不存在等。当触发这些业务异常时,我们需要抛出这些自定义的业务异常,并对其进行处理。一般我们要把这些异常信息的状态码和异常描述,友好地返回给调用者,调用者则利用状态码等信息判断异常的具体情况。

过去,我们可能需要在 controller 层通过 try/catch 处理。首先 catch 自定义异常,然后 catch 其它异常。对于不同的异常,我们需要在 catch 的同时封装将要返回的对象。然而,这么做的弊端就是代码会变得冗长。每个接口都需要做 try/catch 处理,而且一旦需要调整,所有的接口都需要修改一遍,非常不利于代码的维护,如下段代码所示

阅读全文 »