
SpringBoot 实战
文章平均质量分 95
Spring Core、Spring Boot、Spring Cloud和其他
看山
人非生而知之者,孰能无惑,惑而不从师,其为惑也,终不解矣
展开
-
SpringBoot 实战:国际化组件 MessageSource 与 Nacos 组合实现动态配置能力
前面介绍了 Spring 的 MessageSource 组件的用法、执行逻辑和源码,本文我们将根据前面的知识,实现自己的动态刷新的国际化组件。原创 2022-08-15 07:23:11 · 237 阅读 · 0 评论 -
SpringBoot实战:国际化组件MessageSource的执行逻辑与源码
掌握 MessageSource 的原理,我们才能更好的扩展。原创 2022-08-07 21:19:40 · 2536 阅读 · 1 评论 -
《SpringBoot 手册》:国际化组件 MessageSource
咱们今天一起来聊聊 SpringBoot 中的国际化组件 MessageSource。原创 2022-07-30 11:41:43 · 3865 阅读 · 0 评论 -
SpringBoot 实战:加载和读取资源文件
该图片由Marna Buys在Pixabay上发布你好,我是看山。本文聊一聊在 SpringBoot 应用中,访问加载类路径(classpath)中的文件内容的多种方法。通过Resource接口Resource接口抽象出一种更底层的方式管理资源,可以实现通过统一的方式处理各类文件资源。下面是几种获取资源实例的方法。手动加载访问类路径中的文件,我们可以直接使用ClassPathResource加载内容,比如:new ClassPathResource("data/resource-dat..原创 2021-10-24 10:47:43 · 9790 阅读 · 34 评论 -
SpringBoot 实战:JUnit5+MockMvc+Mockito 做好单元测试
该图片由NickyPe在Pixabay上发布你好,我是看山。今天聊聊如何在 SpringBoot 中集成 Junit5、MockMvc、Mocktio。Junit5 是在 Java 栈中应用最广的测试框架,Junit4 一度霸榜。升级到 Junit5 之后,除了增加 Java8 的很多特性,做了很多功能增强,在结构上做了优化调整,拆分了很多不同的模块,可以按需引入,比如:JUnit Platform - 在 JVM 上启动测试框架JUnit Jupiter - 在 JUnit5 中编写测..原创 2021-09-11 23:04:08 · 5975 阅读 · 38 评论 -
SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数(原理篇)
该图片由Johnnys_pic在Pixabay上发布你好,我是看山。在优雅的使用枚举参数(原理篇)中我们聊过,Spring对于不同的参数形式,会采用不同的处理类处理参数,这种形式,有些类似于策略模式。将针对不同参数形式的处理逻辑,拆分到不同处理类中,减少耦合和各种if-else逻辑。本文就来扒一扒,RequestBody参数中使用枚举参数的原理。找入口对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的h..原创 2021-09-02 07:50:29 · 4926 阅读 · 135 评论 -
SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数
该图片由Christian_Crowd在Pixabay上发布你好,我是看山。前文说到 优雅的使用枚举参数 和 实现原理,本文继续说一下如何在 RequestBody 中优雅使用枚举。本文先上实战,说一下如何实现。在 优雅的使用枚举参数 代码的基础上,我们继续实现。如果想要获取源码,可以关注公号「看山的小屋」,回复 spring 即可。确认需求需求与前文类似,只不过这里需要是在 RequestBody 中使用。与前文不同的是,这种请求是通过 Http Body 的方式传输到后端,通常是 js..原创 2021-08-24 07:25:26 · 5865 阅读 · 134 评论 -
SpringBoot 实战:优雅的使用枚举参数(原理篇)
该图片由minka2507在Pixabay上发布你好,我是看山。SpringBoot 实战:优雅的使用枚举参数 中聊了怎么优雅的使用枚举参数,本文就来扒一扒 Spring 是如何找到对应转换器 Converter 的。找入口对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的ha.handle(processedRequest, response, mappedHandler.getHandler())逻..原创 2021-08-16 09:42:13 · 4397 阅读 · 104 评论 -
SpringBoot 实战:一招实现结果的优雅响应
因为最近事比较杂,很多文章都没有连续性,想到哪写到哪,大家海涵,后面理清思绪,会连贯输出,形成系列,供大家找茬。今天说一下 Spring Boot 如何实现优雅的数据响应:统一的结果响应格式、简单的数据封装。前提无论系统规模大小,大部分 Spring Boot 项目是提供 Restful + json 接口,供前端或其他服务调用,格式统一规范,是程序猿彼此善待彼此的象征,也是减少联调挨骂的基本保障。通常响应结果中需要包含业务状态码、响应描述、响应时间戳、响应内容,比如:{ "code": 2原创 2020-08-13 00:17:31 · 2345 阅读 · 2 评论 -
SpringBoot 实战:如何优雅的处理异常
前段时间写了一篇关于实现统一响应信息的博文,根据文中实战操作,能够解决正常响应的一致性,但想要实现优雅响应,还需要优雅的处理异常响应,所以有了这篇内容。作为后台服务,能够正确的处理程序抛出的异常,并返回友好的异常信息是非常重要的,毕竟我们大部分代码都是为了 处理异常情况。而且,统一的异常响应,有助于客户端理解服务端响应,并作出正确处理,而且能够提升接口的服务质量。SpringBoot提供了异常的响应,可以通过/error请求查看效果:这是从浏览器打开的场景,也就是请求头不包括content-ty.原创 2020-10-10 14:49:09 · 2691 阅读 · 0 评论 -
SpringBoot 实战:自定义 Filter 优雅获取请求参数和响应结果
你好,我是看山。一个系统上线,肯定会或多或少的存在异常情况。为了更快更好的排雷,记录请求参数和响应结果是非常必要的。所以,Nginx 和 Tomcat 之类的 web 服务器,都提供了访问日志,可以帮助我们记录一些请求信息。本文是在我们的应用中,定义一个Filter来实现记录请求参数和响应结果的功能。有一定经验的都知道,如果我们在Filter中读取了HttpServletRequest或者HttpServletResponse的流,就没有办法再次读取了,这样就会造成请求异常。所以,我们需要借助 S.原创 2021-04-29 20:05:02 · 8861 阅读 · 4 评论 -
SpringBoot 实战:通过 BeanPostProcessor 动态注入 ID 生成器
你好,我是看山。在分布式系统中,我们会需要 ID 生成器的组件,这个组件可以实现帮助我们生成顺序的或者带业务含义的 ID。目前有很多经典的 ID 生成方式,比如数据库自增列(自增主键或序列)、Snowflake 算法、美团 Leaf 算法等等,所以,会有一些公司级或者业务级的 ID 生成器组件的诞生。本文就是通过 BeanPostProcessor 实现动态注入 ID 生成器的实战。在 Spring 中,实现注入的方式很多,比如 springboot 的 starter,在自定义的 Configu.原创 2021-04-25 22:15:09 · 1416 阅读 · 0 评论 -
SpringBoot 实战:优雅的使用枚举参数
该图片由Sinousxl在Pixabay上发布你好,我是看山。接口开发过程中不免有表示类型的参数,比如 0 表示未知,1 表示男,2 表示女。通常有两种做法,一种是用数字表示,另一种是使用枚举实现。使用数字表示就是通过契约形式,约定每个数字表示的含义,接口接收到参数,就按照约定对类型进行判断,接口维护成本比较大。在 Spring 体系中,使用枚举表示,是借助 Spring 的 Converter 机制,可以将数字或字符串对应到枚举的序号或者 name,然后将前端的输入转换为枚举类型。在场景..原创 2021-08-10 22:47:45 · 5967 阅读 · 56 评论 -
SpringBoot 实战:spring-cloud-config 非对称加密 keystore 文件加载异常
因为配置内容可能涉及到某些敏感信息,所以可以简单的在Spring Cloud Config中使用非对称加密实现敏感信息的安全存储。但是在使用过程中,却碰到一些奇葩的问题,无论是官方文档还是一些大神的博文,都没有明确解决。当然,这个问题的出现与我的配置有关,很多人可能并没有碰到。这里把问题描述下,万一有人和我一样配置,也出现问题,就可以帮助别人节省点时间了。原创 2017-10-12 16:16:19 · 14977 阅读 · 3 评论