Spring Boot 2系列(三十八):全局异常统一处理

  Spring Boot 在默认情况下,提供了 /error 映射来处理所有错误,在 Servlet 容器里注册了全局的错误页面(Whitelabel Error Page)并返回客户端。

  也可以自定义替换默认的异常处理, 通过实现 ErrorController 接口并注册为 Bean;或者添加 ErrorAttributes 类型的 Bean 来替换内容。

  通常情况下,都会自定义全局异常统一处理,返回统一的消息结构体,便于了解和快速定位问题,Spring 提供了 @ControllerAdvice 注解,非常好实现。

  Spring Boot 官方文档,错误处理:28.1.11 Error Handling

阅读更多

Spring Boot 2系列(三十七):集成 Swagger2 生成 API 文档

  Swagger官方宣称是最好的 API 文档构建工具,也确实好用,易用。Swagger 生成的 API 接口文档是 Restful 风格的,会自动识别传参方式( path , query , body ),参数类型等;会自动识别允许的请求方式,若接口没有限制请求方式,Swagger 则会生成 Restful 风格的所有请求(get、post、put、patch、options、head、delete)。

  项目的 API 接口需要更新,需要维护,直接通过 Swagger 工具生成非常的方便,不需要维护一个单独的API文档。单独的 API 文档非常容易出错和遗漏,特别是时间长了修改的人多的情况下,更是难以保证准确性。

  Swagger GitHubSwagger 官网SpringFox GitHub

阅读更多

Spring Boot 2系列(三十六):集成 JavaMail 发送邮件

  发送电子邮件到用户是项目中一个很常见的功能,如邮件通知、邮件营销、通过邮件激活账号、通过邮件找回密码等。

  Spring Framework 提供了一个用于发送电子邮件的实用库,保护用户免受底层邮件系统的细节影响。提供了发送电子邮件的简单抽象 JavaMailSender 接口,Spring Boot 为 JavaMail提供了自动配置和启动模块。

  Spring Boot 对 Email 的支持官方说明,有关使用 JavaMail 的详细说明,可参阅官方的参考文档, JavaMail 参考实现

阅读更多

Spring Boot 2系列(三十五):集成 RabbitMQ 消息中间件

  Spring AMQP 默认支持 RabbitMQ 作为 AMQP 协议的实现,因为…RabbitMQ 和 Spring 是同一家软件公司开发的。

  Spring Boot 对 RabbitMQ 的支持也是基于 Spring AMQP。为 RabbitMQ 提供了自动配置,可以直接使用rabbitTemplate,自动开启了消息监听注解@EnableRabbit

  更多关于消息服务概念和支持的组件可阅读Spring Boot 2实践系列(三十三):JMS 和 AMQP 消息服务及支持的消息组件。   

阅读更多

Spring Boot 2系列(三十三):JMS 和 AMQP 消息服务及支持的消息组件

  消息组件在现在的互联网应用系统已广泛使用,特别是在大型的、分布式或微服务架构中,要协调系统之间的通信,消息组件几乎是不可或缺的。

  使用消息中间件可实现系统之间的异步通信、可对服务之间的调用进行解耦、可对并发请求实现流量消峰、可用于消息通讯

  Spring Framework 为与消息组件的集成提供了广泛的支持, 从简化使用JMS APIJmsTemplate到完整的异步接收消息的基础架构。 Spring AMQP还为高级消息队列协议提供了类似的功能集。

  Spring Boot 默认就为 ActiveMQ、 RabbitMQ、 Kafka、 Artemis 提供自动配置支持。Spring AMQP 官方文档Spring Boot Message 文档

阅读更多

Spring Boot 2系列(三十二):Spring Boot 配置文件密码加密两种方案

  Spring Boot 项目常把连接数据库的密码明文放在配置文件里,这是非常不安全的,数据是IT企业的核心资产,即使应用服务器被玫击破坏也不能影响到数据库中的数据,更不能因为明文密码被窃取而导致数据库被随意连接和不安全操作的可能存在,所以需要对密码进行加密来增加安全性。

  介绍两种加密方式:jasypt 可加密配置文件中所有属性值; druid 自带了加解密,可对数据库密码进行加密。

阅读更多

Spring Cloud(一):微服务与 Spring Cloud 概述

前言:公司的一个数据聚合项目,开始使用 Spring Cloud来搭建微服务框架,项目有好几十个数据源,每个数据源就是一个微服务。
在应用中有碰到各种问题,概念方面和技术方面都有,需要多层次多角度来理解,所以开辟Spring Cloud系列文章记录个人学习中得失。

Spring Cloud 是个新的知识领域,为应用而学习,将学习到的在实际项目中实践。Spring Cloud 可集成一系列组件, 为中小型互联网企业提供了一站式的微服务架构解决方案。

Spring Cloud 官网Spring Cloud GitHub,可以在GitHub上搜Spring Cloud相关资源。

阅读更多

Spring Boot 2系列(三十一):Spring Batch 批处理框架详解和集成

  Spring Batch 是一款轻量级,全面,用来处理大量数据操作的批处理框架,旨帮助企业开发重要的批处理应用。从数据库、文件或队列中读取大量数据,按要求进行处理转换后输出指定形式的数据。

  Spring Batch 提供了可重复使用的功能,这些功能对于处理大量记录至关重要,包括记录/跟踪,事务管理,作业(job)统计,作业(job)重启,跳过和资源管理等。 它还提供更高级优化和分区技术用于实现极高容量和高性能的批处理作业。 作业的运行的实例状态、执行数据和参数可以配置持久化到数据库,可以随时监听作用的执行状态。

  Spring Batch 不是一个调度框架(如 Quartz),而是与调度应用结合使用,不是替代关系。Spring Batch 自动执行基本批处理的迭代,提供处理类似事务的功能,通常在脱机环境中处理,无需任何用户交互。

  Spring Batch 官网,Spring Batch v4.0.1 Releas 参考文档

阅读更多

Spring Boot 2系列(三十):Spring Security 安全框架详解和集成

Spring Security 为基于 Spring 的应用程序提供安全保护,是一个功能强大且可高度自定义的自份验证和访问控制框架。

应用程序安全性的两个主要方面是身份验证(认证:Authentication)和授权(访问控制:Authorization), 这也是 Spring Security 目标的两个主要领域。

身份验证:认证,即确认用户可以访问系统,可理解为用户账号密码正确且有效。
授权:访问控制,即用户在当前系统下所拥有的功能权限。

Spring Boot 关于 Spring Security 官方说明Security, Spring Security 官方文档 -> learn, Spring Boot 集成 Spring Security 官方说明, Spring Security -> Samples and Guides (Start Here)

阅读更多