
Spring Boot
文章平均质量分 86
分享Springboot相关的知识点、实战及相关问题。
程序新视界
个人公众号【程序新视界】,一个硬技术,软实力同步提升的平台。《Spring Boo技术内幕:架构设计与实现原理》作者,《深入以太坊智能合约开发》联合作者之一。主要从事于三方支付行业。
展开
-
SpringBoot:如何优雅地进行响应数据封装、异常处理?
本篇文章介绍了基于SpringBoot的实现,如果你的项目中采用了其他的技术栈,则可考虑对应的处理方式。像上面的示例,用200表示返回成功,这就是遵循HTTP响应状态码的形式来返回,比如还有其他的400、401、404、500等。在上述方法中,对一些常见的异常进行了统一处理。通常情况下,根据业务需要还会定义业务异常,并对业务异常进行处理,大家可以根据自己项目中异常的使用情况进行拓展。在此,笔者暂不评论每种形式的好坏,只列举了常规的几种形式,大家了解对应的情况,做到心中有数,有所选择即可。...原创 2022-08-03 09:01:06 · 688 阅读 · 0 评论 -
Spring Boot + EasyExcel导入导出,简直太好用了!
在EasyExcel执行write方法之后,获得ExcelWriterBuilder类,通过该类的registerWriteHandler方法可以设置一些处理策略。/***设置单元格样式(仅用于示例)**@return样式策略*///表头策略//表头水平对齐居中//背景色//自动换行//内容策略//设置数据允许的数据格式,这里49代表所有可以都允许设置//设置背景色该类中示例设置了Excel的基础格式。/**/**...原创 2022-08-01 07:13:06 · 8287 阅读 · 1 评论 -
Spring Boot集成Jasypt异常DecryptionException
在Spring Boot项目中对Jasypt进行集成,当生成密码之后,启动程序抛如下异常:com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Unable to decrypt。完整异常信息如下:Caused by: com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Unable to decrypt: ENC(/AL9nJENCYCh9P原创 2021-09-30 09:15:55 · 3457 阅读 · 0 评论 -
SpringBoot2.x系列教程(七十二)Spring Boot配置文件数据也可以轻松加密?
在实践中,项目的某些配置信息是需要进行加密处理的,以减少敏感信息泄露的风险。比如,在使用Druid时,就可以基于它提供的公私钥加密方式对数据库的密码进行加密。但更多时候,比如Redis密码、MQ密码等敏感信息,也需要进行加密,此时就没那么方便了。本篇文章给大家介绍一款Java类库Jasypt,同时基于Spring Boot项目来演示一下如何对配置文件信息进行加密。一个简单的SpringBoot项目我们先来创建一个简单的Spring Boot项目,构建一个加密数据运用的场景。无论通过Idea或官网等方原创 2021-09-30 09:03:36 · 925 阅读 · 0 评论 -
如何启用Spring Boot Actuator的所有Endpoints
概述本文将介绍如何启用Spring Boot Actuator的所有Endpoints。首先从maven依赖开始,然后讲解如何通过配置文件来控制Endpoint(后称作端点)。最后再学习一下如何确保端点的安全。其中Spring Boot 1.x和Spring Boot 2.x在Actuator的端点配置上会有一定的区别。当出现区别时,会进行提示。引入依赖要使用Spring Boot Actuator需要先在项目中引入对应的依赖:<dependency> <groupId&原创 2021-07-14 18:51:32 · 2220 阅读 · 1 评论 -
@PostConstruct注解是Spring提供的?今天讲点不一样的
前言我们在讲《Spring的Lifecycle》时提到,在Spring的使用中可以通过Lifecycle接口实现一些基于Spring容器生命周期逻辑。与此对照的就是通过@PostConstruct和@PreDestroy在Bean初始化或销毁时执行一些操作。很明显Spring的Lifecycle是基于容器的生命周期来处理逻辑,而@PostConstruct和@PreDestroy是基于Bean的生命周期来处理业务逻辑。这里很多朋友就产生了一个误解,以为@PostConstruct注解也是Spring提原创 2021-06-01 06:50:36 · 1255 阅读 · 0 评论 -
Spring Boot Actuator监控使用详解
在企业级应用中,学习了如何进行SpringBoot应用的功能开发,以及如何写单元测试、集成测试等还是不够的。在实际的软件开发中还需要:应用程序的监控和管理。SpringBoot的Actuator模块实现了应用的监控与管理。Actuator简介生产系统中,往往需要对系统实际运行的情况(例如cpu、io、disk、db、业务功能等指标)进行监控运维。在SpringBoot项目中Actuator模块...原创 2019-11-20 07:04:27 · 3845 阅读 · 0 评论 -
Spring Boot通过ApplicationArguments获取args参数
在具体使用Spring Boot的过程中,如果需要获得SpringApplication.run(args)方法传递的参数,那么可通过ApplicationArguments接口来获得。使用方法非常简单,只用在需要获得参数的类中直接注入ApplicationArguments即可,如下代码:@Componentpublic class ArgsBean { @Resource priv...原创 2019-08-13 10:34:07 · 11812 阅读 · 5 评论 -
Spring中ApplicationListener的使用
背景ApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成ApplicationContext的事件机制。如果容器中存在ApplicationListener的Bean,当ApplicationContext调用publishEvent方法时,对应的Bean会被触发。这一过程是典型的观察者模式的实现。ApplicationL...原创 2019-07-17 11:24:47 · 4117 阅读 · 0 评论 -
自定义ApplicationContextInitializer接口实现
简介ApplicationContextInitializer是Spring框架提供的接口, 该接口的主要功能就是在接口ConfigurableApplicationContext刷新之前,允许用户对ConfigurableApplicationContext实例做一定的操作。该接口只有一个initialize方法。ApplicationContextInitializer接口源代码该接口只...原创 2019-07-17 09:51:37 · 1248 阅读 · 0 评论 -
SpringBoot源码解析之main方法推断
在《SpringBoot源码解析之应用类型识别》一文中我们已经了解了SpringBoot是如何推断出应用类型的。在推断出应用类型之后,SpringBoot又进行了main方法的推断。在进行main方法的推断时,主要使用了堆栈信息一层层的判断,来获得main方法。具体源代码如下:private Class<?> deduceMainApplicationClass() { try ...原创 2019-05-02 15:01:10 · 2241 阅读 · 2 评论 -
SpringBoot源码解析之应用类型识别
创建SpringBoot项目时,如果不选择starter-web,创建的SpringBoot项目可以正常运行,但运行结束程序便终止了。如果配置starter-web,则正常启动web应用。那么,SpringBoot是如何分辨出来当前应用是为web应用还是其他类型的应用呢?本篇文章带领大家从源码层面进行相应分析。枚举WebApplicationTypeSpringBoot使用枚举类WebAppl...原创 2019-04-21 07:42:16 · 1991 阅读 · 2 评论 -
《Drools7.0.0.Final规则引擎教程》之Springboot集成
本来准备按部就班的一章一章更新Drools相关教程,怎么QQ群组(593177274)有朋友继续Springboot与Drools的集成demo,于是抽出时间写了一个,现在拿出来分享一下。加入群组可免费下载demo,也可以在优快云下载频道下载:Springboot&Drools demopom文件引入了springboot和drools的依赖,同时引入了kie-spring的集成依赖。<depen原创 2017-07-18 17:30:23 · 21434 阅读 · 14 评论 -
Spring的Lifecycle和SmartLifecycle,可以没用过,但不能不知道!
前言在使用Spring的过程中,我们通常会用@PostConstruct和@PreDestroy在Bean初始化或销毁时执行一些操作,这些操作属于Bean声明周期级别的。那么,就存在一些遗漏的场景,比如我们想在容器本身的生命周期(比如容器启动、停止)的事件上做一些工作,很典型的就是Spring Boot中启动内嵌的Web容器。该怎么办?这就需要用到Spring提供的另外一个接口Lifecycle。这篇文件就介绍一下Lifecycle接口,以及比它更聪明(Smart)的SmartLifecycle。L原创 2021-05-27 21:39:27 · 2828 阅读 · 1 评论 -
Spring Cloud集成Nacos服务发现源码解析?翻了三套源码,保质保鲜!
前面文章我们介绍了Nacos的功能及设计架构,这篇文章就以Nacos提供的服务注册功能为主线,来讲解Nacos的客户端是如何在Spring Cloud进行集成和实现的。本会配合源码分析、流程图整理、核心API解析等维度来让大家深入浅出、系统的来学习。Spring Boot的自动注册故事要从头Spring Boot的自动注入开始。很多朋友大概都了解过Spring Boot的自动配置功能,而Spring Cloud又是基于Spring Boot框架的。因此,在学习Nacos注册业务之前,我们先来回顾一下原创 2021-05-18 19:56:06 · 698 阅读 · 4 评论 -
REST API返回结果对象设计
基于REST API的项目返回的数据结构题都是统一的,这样方便接口对接和使用。因此,对结果对象的设计会有一定的要求:一个结果对象要能够同时支持成功和失败的数据结构;要能够处理多种类的返回结果对象;能够很轻易的判断出结果是成功还是失败;能够存储错误编码和错误信息;下面就基于Spring Boot项目来设计一下对应的统一结果返回对象。这里定义对应的类为ApiResponse:import com.fasterxml.jackson.annotation.JsonCreator;import c原创 2021-05-13 09:40:45 · 1161 阅读 · 3 评论 -
SpringBoot集成Swagger3,还想来份离线文档?真酷炫
前言随着项目架构的演化,前后端分离是不可阻挡的趋势。这种模式的协作在实践的过程中经常会遇到的一个问题就是文档。在《一位CTO告诉我,项目中至少需要这3类文档》一文我们已经描述了文档的重要性,而接口文档便是其中之一,可以说是必不可少的。但编写接口文档对开发人员来说是一大难题,而且接口还在不断的变化,还要花费精力去维护接口文档的更新。既然存在痛点,那么必须会出现解决此痛点的产品,这就是Swagger,目前已经更新到Swagger3版本了。如果你还停留在Swagger2,建议升级到Swagger3,整体U原创 2021-05-08 19:17:58 · 982 阅读 · 0 评论 -
Spring Boot集成Druid异常discard long time none received connection.
Spring Boot集成Druid异常在Spring Boot集成Druid项目中,发现错误日志中频繁的出现如下错误信息:discard long time none received connection. , jdbcUrl : jdbc:mysql://******?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8, version : 1.2.3, last原创 2021-04-29 07:12:10 · 6571 阅读 · 0 评论 -
基于SpringBoot实现让日志像诗一样有韵律(日志追踪)
前言在传统系统中,如果能够提供日志输出,基本上已经能够满足需求的。但一旦将系统拆分成两套及以上的系统,再加上负载均衡等,调用链路就变得复杂起来。特别是进一步向微服务方向演化,如果没有日志的合理规划、链路追踪,那么排查日志将变得异常困难。比如系统A、B、C,调用链路为A -> B -> C,如果每套服务都是双活,则调用路径有2的三次方种可能性。如果系统更多,服务更多,调用链路则会成指数增长。因此,无论是几个简单的内部服务调用,还是复杂的微服务系统,都需要通过一个机制来实现日志的链路追踪。让原创 2021-04-14 06:37:12 · 1177 阅读 · 2 评论 -
SpringBoot多环境配置,旧的已过时,新的有人还不知道
如果你使用Spring Boot 2.4及以上版本,你会发现Spring Boot中对多环境支持的配置项spring.profiles.active已经被废弃。而Spring Boot也一直在逐步推新的配置方式,可能很多人还不知道,本文就带大家一探究竟。Spring Boot的多环境配置在学习新的配置方式之前,先回顾一下通常的多环境配置形式。在项目中我们经常会遇到一个项目部署到多个环境,比如开发环境、测试环境、生产环境。而不同的环境又有不同的配置文件。因此,Spring Boot提供了基于spring.原创 2021-04-08 22:17:26 · 4498 阅读 · 4 评论 -
启动Spring Boot时,如果不设置内存参数会如何?
最近正在进行从Spring Boot往Spring Cloud上改造升级。之前部署的应用程序比较少,还没什么问题。当Spring Cloud项目逐步新增之后,问题就爆发了,服务器内存不够用了。而现有的用户体量也没必要对服务器再次进行升级,于是就开始着手Spring Boot启动时JVM内存配置的优化。服务现状由于之前服务比较少,服务器资源充足,许多服务启动时都未添加JVM参数(遗留问题)。结果就是每个服务启动都占用了1.5G-2G的内存,有些服务的体量根本用不了这么多。那么,在Spring Boot中如原创 2021-04-01 21:50:38 · 2586 阅读 · 0 评论 -
放弃FastJson!一篇就够,Jackson的功能原来如此之牛(万字干货)
在上篇《经过多方调研,最终还是决定禁用FastJson!》中,讲了FastJson的基本使用以及存在的不确定性问题,所以最终决定在项目中放弃使用,进而选择市面上比较主流,Spring Boot默认绑定的JSON类库:Jackson。本文就来讲解一下Jackson的基本使用以及与Spring Boot的结合与实践。什么是JacksonJackson是比较主流的基于Java的JSON类库,可用于Json和XML与JavaBean之间的序列化和反序列化。没看错,Jackson也可以处理JavaBean与X原创 2021-02-24 07:57:12 · 7373 阅读 · 6 评论 -
SpringBoot的四种异步处理,写这篇文章,我自己先学到了
最近更新了一系列关于异步和回调的文章,比如《一篇文章,搞明白异步和多线程的区别》、《两个经典例子让你彻底理解java回调机制》、《异步请求和异步调用有区别?》,大家感兴趣的话可温习一下。今天再带大家学习汇总一下SpringBoot中异步处理的4种形式,下面开始正文:前言在网络上有关于SpringBoot的异步请求和异步调有两种说法,经过调用这两种说法本质上就是一回事,在《异步请求和异步调用有区别?》一种,已经做过解释了。同时,我们也知道了“服务实现的异步与同步特性完全独立于客户端调用的异步和同步特性原创 2021-02-21 21:48:50 · 10030 阅读 · 0 评论 -
SpringBoot2.x系列教程(六十九)Spring Boot整合Shiro,两种方式实战总结(含源码)
Shiro是历史悠久的权限管理框,简单易用,易用集成,同时权限管理也是每个项目必不可少的功能。Spring Boot是Java领域炙手可热的脚手架框架。今天这篇文章就带大家将这两个框架进行整合。通常Spring Boot中整合Shiro,有两种方案:第一,基于原生API进行整合;第二,基于Shiro官方Starter整合。整体而言,官方Starter整合并没有方便很多,因此,本文主要以原则API进行整合,下面就来看看具体的整合方式。创建Spring Boot项目创建Spring Boot项目通常有原创 2021-01-27 20:02:55 · 939 阅读 · 2 评论 -
自定义SpringBoot默认MVC配置?好几个坑,这篇文章必须珍藏
前言前些天,在项目实践过程中出现了一个奇怪的状况,Spring Boot的参数绑定失效了。而起因只是因为同事把参数上的@RequestParam注解去掉了。我们都知道,如果参数名称和Controller的方法名相同时,根本不需要@RequestParam注解的,Spring Boot会自动帮我们完成参数的绑定。但为什么自动绑定机制失效了呢?本篇文章会为大家揭开谜底,在此过程中也会全面讲解如何在Spring Boot项目中自定义配置WebMvc,以及这其中的很多坑。SpringBoot自定义WebMvc原创 2021-01-15 07:03:40 · 986 阅读 · 1 评论 -
根据Token获取用户信息的N种姿势,这种最完美!
Web项目中经常会用token来进行用户的访问验证,那么在获得token之后,如果有很多地方需要根据token获得对应的用户信息,你会怎么获取?本文给大家提供N种方式,对照一下,看看你的项目中所使用的方式属于哪个Level,是不是要赶快升级一下?关于token生成、认证部分的操作本文不会涉及,也就是默认token是经过合法性校验的,本文将重点放在之后进行的业务相关处理,即基于token获取用户信息的方式(部分方式需要基于SpringBoot)。Level1:手动获取通常token会放在header当原创 2020-12-21 07:34:47 · 16537 阅读 · 10 评论 -
粉丝说SpringBoot集成validation校验参数有坑,我试了试
公众号中分享了一篇文章,关于SpringBoot集成validation校验参数的,粉丝留言说有坑。原留言如下:有坑,你试试^A-\\d{12}-\\d{4}$,这条正则经过validate这个方法无论参数写的对不对都会报验证错误,而用main方法测试是正常的。。话说,针对这种回复我是不太信了,直觉告诉我,肯定是这位粉丝用错了。但既然粉丝有疑问还是需要专门写一个demo来验证一下的。说写就写。SpringBoot集成validation集成过程非常简单,在原项目的pom文件中直接引入如下依赖:&原创 2020-12-15 14:13:03 · 6883 阅读 · 14 评论 -
SpringBoot2.x系列教程(六十八)Spring Boot集成Redis的坑,踩了!
最近项目中使用SpringBoot集成Redis,踩到了一个坑:从Redis中获取数据为null,但实际上Redis中是存在对应的数据的。是什么原因导致此坑的呢?本文就带大家从SpringBoot集成Redis、所踩的坑以及自动配置源码分析来学习一下SpringBoot中如何正确的使用Redis。SpringBoot集成Redis在SpringBoot项目中只需在pom文件中引入Redis对应的starter,配置Redis连接信息即可进行使用了。pom依赖引入:<dependency>原创 2020-12-15 11:37:11 · 1960 阅读 · 2 评论 -
SpringBoot2.x系列教程(六十七)Spring Boot注入RestTemplate及源码解析
引入SpringBoot本来就支持REST服务,因此在SpringBoot项目之间经常需要通过REST的形式来相互调用。本文以具体的实例带大家了解一下SpringBoot中怎么使用RestTemplate进行接口调用。同时,会讲解部分相关源码。RestTemplate的实例化RestTemplate实例通常需要自己进行定制,SpringBoot相关的自动配置bean。但是,SpringBoot提供了自动配置的RestTemplateBuilder,可以用它来创建RestTemplate实例。那么,Sp原创 2020-12-10 14:41:40 · 1479 阅读 · 0 评论 -
RocketMQ,同一个topic下是否可以通过不同的tag来进行订阅吗?
针对以上问题,有两个场景:使用阿里云的云服务器的RocketMQ和使用自己搭建的RocketMQ。但无论采用这两种的任何一种,都是可以在同一个topic下,通过tag来进行业务区分的。网上有很多分析相关使用方式的文章,虽然分析的结果都是“不可以”,但我们可以通过其他的一些方案来进行解决。自主搭建的RocketMQ通过自主搭建RocketMQ,然后通过SpringBoot进行集成实现,可以参考在公众号【程序新视界】中的文章《Spring Boot快速集成RocketMQ实战教程》,可关注公众号搜索,也可原创 2020-11-26 19:27:13 · 8200 阅读 · 1 评论 -
SpringBoot2.x系列教程(六十六)Spring Boot快速集成RocketMQ实战教程
前言RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能。最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说RocketMQ是阿里巴巴的消息中间件,项目却在Apache的顶级项目中。网络上通过SpringBoot集成RocketMQ的教程很多,但大多数都无法做到快速、通用的进行集成。本篇文章带大家快速完成基于Spring Boot的集成使用,同时针对一些集成过程中的概念和使用方法以实例进行讲解。RocketMQ的部署原创 2020-11-24 21:15:59 · 1464 阅读 · 0 评论 -
SpringBoot下的策略模式,消灭了大量的ifelse,真香!
前言项目中有这样一个场景,在公园放置了用来拍摄人像的识别杆,根据用户在不同识别杆之间采集的图象来计算用户的运动距离。由于涉及到许多公园,每个公园的布局不同,识别杆之间距离不同,算法也不同。但代码中每个不同的公园的算法区别都采用ifelse来进行判断处理。这样的写法你能看得下去吗?肯定不能。所以,就用策略模式对此进行了重构。项目采用SpringBoot架构,于是对不同的策略模式写法又进行了一次升级。现在就以实战的角度带领大家来学习策略模式,以及如何将ifelse重构为基于SpringBoot的策略模式。原创 2020-10-24 06:41:19 · 2713 阅读 · 0 评论 -
看到SpringBoot神一样集成Druid,我吐了!
原文首发于公众号:程序新视界,欢迎关注。都说尽量不要在外包团队待太久,事实会告诉你一点都不假。最近接手外包团队的项目,发现很多问题。最令人难以接受的便是在SpringBoot集成Druid数据库连接池时的配置,直接废掉,很无语。在写这个坑之前,还是说一下外包团队一个严重的弊端。为了赶工期,团队自身和甲方都不能够很好的保证代码质量。当劣质代码泛滥,又遇上Ctr+C和Ctr+V,救都救不过来。待久了,想写优质代码都难。同时,又有一大堆烂代码等着你去“学”和“抄”,所以有机会赶紧跳出这个恶性循环。好了.原创 2020-10-22 06:55:39 · 2897 阅读 · 2 评论 -
万字详解logback日志框架,再没这么全的了!
老项目中日志使用混乱,某些项目使用log4j,某些项目使用logback,统一是必须的。既然Spring Boot已经将logback做为默认集成的日志框架,全面了解学习是必然了。曾经log4j是流行的日志框架,现在已被它的继任者logback替代,logback更快,更小,更灵活。当然,如果你的项目中还在用System.out.println()来输出内容,那更是得行动起来,要么“逃”吧,要么改造吧。logback简介先来看看logback何许人也,最直接的就是看看它的官网http://logbac原创 2020-10-21 06:45:21 · 4498 阅读 · 15 评论 -
SpringBoot2.x系列教程(六十三)基于Spring Boot快速实现发送邮件功能
邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。邮件协议下面先简单了解一下常见的邮件协议。常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。SMTP协议SMTP的全称是 “Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址原创 2020-08-19 08:30:33 · 3437 阅读 · 1 评论 -
SpringBoot2.x系列教程(六十二)SpringBoot集成ActiveMQ实例详解
在项目开发的过程中我们经常会遇到类似的业务场景:用户申请提现,后台进行账务处理、发送提现短信、调用银行打款通道。在这个过程中调用三方通道(短信或银行通道)都比较耗时,同时账务处理可能也是由专门的账务系统进行处理。那么,为了提高并发和相应速度,后面的三个操作都可以通过异步进行处理。这就用到了消息队列。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。市面上比较常见的消息队列有:ActiveM原创 2020-08-18 06:26:41 · 2477 阅读 · 4 评论 -
Spring Boot启动slf4j提示找不到weblogic.xml日志异常
启动Spring Boot项目时,会遇到如下关于slf4j相关的日志异常情况,导致项目无法启动。相关异常信息如下:Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (c原创 2020-08-03 11:18:33 · 13387 阅读 · 0 评论 -
SpringBoot2.x系列教程(六十一)Spring Boot集成FastDFS实现文件上传
针对有比较多的视频、图片或文件的网站,文件上传和存储是必不可少的。在《文件管理系统FastDFS原理详解》一文中介绍了FastDFS相关的原理。在《FastDFS基于Docker安装,免踩坑版》一文中介绍了基于Docker的安装。这篇文章带领大家来基于Spring Boot集成FastDFS,并实现上传和访问的功能。客户端FastDFS官方提供了一个Java版本的客户端,地址为:https://github.com/happyfish100/fastdfs-client-java但该客户端有几个问原创 2020-07-30 17:59:47 · 1298 阅读 · 0 评论 -
SpringBoot2.x系列教程(六十)Java Bean Validation详解及国际化集成
针对web项目,对外接口的参数校验是必不可少的。如果接口参数比较少,还可以通过ifelse进行逐个校验,但如果参数比较多,这种方式来进行编写代码会变得非常冗余。作为程序员,抽象和统一处理的能力是也是编程能力的重要指标。本篇文章就带大家基于Java Bean Validation来完成web项目参数校验的统一处理。Bean ValidationJSR303规范是Java EE 6中的一项子规范:Bean Validation,官方参考实现是Hibernate Validator,JSR303 用于对Ja原创 2020-07-09 14:33:01 · 1459 阅读 · 0 评论 -
SpringBoot2.x系列教程(五十九)SpringBoot实现国际化i18n功能
最近新开发的项目中需要使用到国际化功能,项目是基于SpringBoot来进行开发,借此机会整理一篇关于SpringBoot实现国际化i18n功能的文章,分享给大家。依赖引入在Spring Boot的web项目中无需引入其他特殊的配置,默认的web starter中便已经涵盖了所需的基础组件。对应的依赖pom配置如下:<dependency> <groupId>org.springframework.boot</groupId> <artifac原创 2020-07-07 21:25:06 · 2524 阅读 · 1 评论