Spring MVC 之 自定义参数校验(JSR 303 - Bean Validation)

系统提供对外接口或公用方法时,通常需要对入参校验,即直接在接口入口层就进行校验,不让非法参数流入到业务层导致异常,确保系统的健壮性。。

数据校验分客户端校验和服务端校验,客户端校验主要在页面通过JavaScript来实现,过滤正常用户的误操作,仅做初步过滤;服务端校验是整个应用阻止非法数据的最后防线,客户端校验绝不能替代服务端的校验,客户端校验可以降低服务器的负载。

阅读更多

Spring MVC 之 HandlerMapping 源码分析与应用(获取所有URI)

整理这篇文章由两个因素引发:

  • 一个是参与的微服务项目涉及到权限管理应用到了 HandlerMapping ,使用自定义注解,自动或手动拿到各个微服务所有自定义的 Controller RequestMapping(URI)同步到权限管理模块。

  • 二是开发的项目报了异常,打印的异常信息比较有意思,就跟踪源码查到信息也是来自于 HandlerMapping,这些信息可以自己获取后应用在拦截器或 Controller 层的 AOP 中。

    备注:已使用 AOP 拿到类似到源码抛出的打印的异常信息,但没有源码抛出的异常信息完美优雅。

阅读更多

Spring Boot 2系列(五十五):spring-boot-maven-plugin 详细配置

创建 Spring Boot 应用,默认会添加 Maven 插件:spring-boot-maven-plugin。如果该应用的结构比较简单,使用默认的编译打包等,可以不用额外的配置。

若应用结构比较复杂,如父子工程,多层结构等;或要通过命令行动态指定打包方式等等,就需要额外的配置支持了。

该篇结合官方文档对 spring-boot-maven-plugin 的使用配置进行详细描述。另有的 Maven 相关文章,但不是针对 Spring Boot 和 插件的。

Spring Boot Maven Plugin 官网Apache Maven 官网

阅读更多

Spring Boot 2系列(五十四):分布式文件服务 FastDFS 安装与集成

项目需要用到文件服务,外网使用阿里云的 OSS 对象存储,内网优先考虑 FastDFS,备选 go-fastdfs

FastDFS 是一款开源的轻量级的分布式文件系统,功能主要包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了文件大容量存储和高性能访问的问题。FastDFS特别适合以文件为载体的在线服务,如图片、视频、文档等等。–摘自官方说明。

FastDFS 的官方文档极少,不便于快速学习用使用,需要个人整理总结。在源码的根目录下有个 INSTALL 的文件,里面记录的是安装 FastDFS 服务的安装步骤。

Github > FastDFSGitee > FastDFSgo-fastdfs fastdfs-client-java。另可参考 tobato/FastDFS_Client 文档。

阅读更多

Spring Boot 2系列(五十三):Spring Boot 配置外部化

Spring Boot 允许将配置外部化,以便可以在不同的环境中使用相同的应用程序代码。可以使用 properties 文件、YAML文件、环境变量和命令行参数将配置外部化。

属性值可以通过@Value注解直接注入到 Bean 的属性,通过 Spring 的 Environment 抽象访问,或者通过@ConfigurationProperties 绑定到结构化对象。

之前写过 Spring Boot 配置的相关文件,但不完整。本篇基于官方文档(Externalized Configuration)行详细描述。

阅读更多

Spring Cloud(二十一):Gateway 元数据,超时,跨域,HTTPS,监控,问题定位

Spring Cloud Gateway 网关除了核心的路由判断表达式(predicate :有的译为谓词)和过滤器外,还有一些其它的设置,以便于可以更好的配置和应用 Gateway。

例如,元数据配置,超时处理,跨域处理,HTTPS 安全配置,监控/指标 收集,问题定位等。可以添加一些全局配置,可以收集健康数据,便于快速定位问题等等。

阅读更多

Spring Cloud(二十):Gateway 路由匹配表达式工厂,过滤器工厂,全局过滤器,HTTP头过滤器

Spring Cloud Gateway 项目提供了一个基于 Spring 生态体系构建的 API 网关,包括:Spring 5,Spring Boot 2。

Spring Cloud Gateway 旨在提供一种简单而有效的方试将前端请求 URI 路由到后端服务的接口,它还提供了其它的附加实用的功能,例如:安全性,监控/指标,可伸缩性等。

阅读更多

Spring Cloud(十九):Gateway 特性,述语,自动配置与简单应用

即将开发的新平台在网关组件上选择了 GatewaySpring 官方主推 Gateway。Zuul 1 虽然很成熟,但不再维护,Zuul 2 已闭源。

网关组件,不管是 Zuul 还是 Gateway,其核心技术脱离不了 代理请求过滤器。本篇根据 Spring Cloud Gateway 官方文档对其功能,配置,应用进行详细描述。

阅读更多

Spring Boot 2系列(五十一):状态设计模式实现简单的工作流

做软件开发的,经常会碰到流程性的业务需求,最常见的是工作流类型的需求。例如审批流程,下单支付流程。每个节点的每个状态分别由有相应权限的角色人处理。

实现流程性业务需求,通常会使用工作流引擎或使用状态流的方式来实现。常见的开源的工作流引擎有 ActivityFlowable

阅读更多