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 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)

阅读更多

Spring Boot 2系列(二十八):Spring Session 集成配合Redis实现Session集群共享

  Web应用的 Session 默认是由服务器容器(如:Tomcat)管理,当部署服务器集群时,会出现在服务器A登录后,再次访问被负载均衡转发到服务器B时会被要求重新登录,这对访问同一个域名站点用户来说是非常不友好的体验,登录服务器的 Session 无法被集群中的其它服务器共用, 这就是集群环境下的 Session 共享问题。

解决集群环境下的 Session 问题的思路基本有三种:
  1. 服务器 Session 复制:让集群中每台服务器都有其它服务器的Session, 这是服务器Session复制机制。
  2. 持久化 Session:自定义 Session管理实现,接管容器对Session的管理,把 Session 持久化提供公共使用,每次请求根据 SessionId到 Session 缓存服务器取 Session 进行判断。
  3. 在负载均衡服务器配置粘性 Session:即把同一个 Session 的多个访问始终绑定到同一台服务器,不推荐使用, 当该服务器宕机机就会出现 Session 丢失,没有利点集群的优势。

  目前行业广泛使用且推荐使用的是持久化Session,对Session 执行统一的存储和访问,实现 Session 在集群服务中的共享。

阅读更多

Spring Boot 2系列(二十七):Listener, Filter, Interceptor

  Listener 监听器,Filter 过滤器,Interceptor 拦截器是 Java Web领域非常重要的三大神器(组件),会经常使用到。

  关注这三个的知识点本篇不做描述,主要记录在Spring Boot框架中这三大组件的使用。

  前面文章也有提到:Spring事件监听,SpringMVC之HandlerInterceptor拦截器, Spring Boot实践系列(二十二):Web相关配置详解

  官方文档:Spring Boot -> Application Events and Listeners,Spring Boot -> Servlets, Filters, Listeners, Spring Boot -> Add a Servlet, Filter, or Listener to an Application

阅读更多

Spring Boot 2系列(二十五):WebSocket详解与使用

  Spring Boot为内嵌的Tomcat 8.5,Jetty 9和Undertow提供了 WebSockets 自动配置。 如果打包 war 文件部署到独立容器,则Spring Boot会认为容器负责其对WebSocket支持的配置。

  Spring Framework提供了丰富的WebSocket支持,可以通过spring-boot-starter-websocket模块轻松的集成使用。

  Spring Boot -> WebSockets, Spring Framework -> Web on Servlet Stack -> WebSockets

阅读更多

Spring Boot 2系列(二十四):内嵌Tomcat SSL配置

  现在https的请求链接已非常普遍了,https可理解为 http的安全版,是基于 http 下加入了SSL(Secure Sockets Layer 安全套接层)层,为数据通讯提供安全支持。

  SSL 配置是基于服务端的,Nginx 和 Tomcat 都可以配置 SSL,SSL证书可以自己通过JDK工具生成,也可以购买认证的证书。

  SSL 协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等(- -百度百科)。

  Java Web 项目的部署环境通常在 Servlet容器(Tomcat)外面一层使用 Nginx 来做返向代理,在 Nginx 服务器里面配置 SSL 并将 HTTP 重定向到 HTTPS,或者在 Tomcat 容器里配置 SSL,将HTTP 请求重定向 到 HTTPS。

  本篇针对 Spring Boot 内嵌 Tomcat 配置 SSL 进行讲解,实际使用可能并不多,但可以了解Spring Boot 内嵌 Tomcat 对 SSL 的支持和配置。

阅读更多