首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简洁参数校验,使用 SpringBoot Validation 对参数进行校验

今天,推荐一种简洁写法,使用 SpringBoot Validation 对方法参数进行校验,特别是在编写 Controller 层方法时,直接使用一个注解即可完成参数校验。...(@RequestBody @Validated Student student) { return student; } }复制代码使用 postman 进行测试,发送一个不带参数请求...); ​ } ​ }复制代码再次使用 postman 发起测试:控制台打印出自定义日志信息: 2022-11-23 22:16:37.800 ERROR 19880 --- [nio-8080...@Valid private ClassInfo classInfo; }复制代码使用 postman 测试一次 分组校验此外还可以使用分组校验,令一组方法对某些字段校验,而令一组方法对其他字段校验...总结在实际开发中,我们可以使用 Spring Boot Validation 提供注解进行参数校验,提高代码可读性,避免编写大量 if-else 代码块和重复校验语句。

3.6K31
您找到你想要的搜索结果了吗?
是的
没有找到

使用ES6默认参数与属性简写编写简洁代码

最后在返回之前创建并修改元素 现在让我们把这个方法优化简洁,容易开发并且清晰展现它意图。...c: c }; // 但是通过使用简写,我们可以像下面这样 // 这和上边代码是等价 const alphabet = { a, b, c }; 简化你API 好吧,让我们再看一个常见例子...最终,它成为了帮我更快速开发并保持简洁函数体JavaScript新特性中一员。 别急,还没完呢!对象中属性简写还用于方法定义。...function关键字 const module = { foo: 42, bar: function (value) { // do something } }; // 我们可以直接忽略它而使用一种简短写法...属性简写实际上更像是一个美化代码功能,但我发现使用它之后我效率更高了而花在编写所有的变量,配置对象以及function关键字上时间更少了。 你已经开始使用默认参数和属性简写了吗?

1.3K41

简单方法使用注解可以执行清晰和类型安全代码

session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); } finally { session.close(); }   可以看出:使用接口...(基于注解),不但可以执行清晰和类型安全代码,而且还不用担心易错字符串字面值以及强制类型转换。...其实可以结合使用,接口中:简单方法使用注解,复杂方法使用xml配置。...毕竟,对于简单语句来说,注解使代码显得更加简洁,然而 Java 注解对于稍微复杂语句就会力不从心并且会显得更加混乱 要求: mapper命名空间org.mybatis.example.BlogMapper...如果对如何通过依赖注入框架来使用 MyBatis 感兴趣可以研究一下 MyBatis-Spring 或 MyBatis-Guice 两个子项目。

60420

Guava 发现:不可变特性与防御性编程

问:它被设计为不可变好处有哪些呢? 答: 节约内存 大家都知道,编程时候,String 类是大量被使用(试着用 VisualVm 等工具分析堆,你会发现永远char[] 类型是占用空间最多。...因为Instant和其他java.time包下类是不可变。Date已过时,不应再在新代码使用。...---- 最后总结一下,防御性编程到底是什么呢? 防御性编程是一种比较泛化概念,是一种细致、谨慎编程习惯。 我们在写代码时候,需要时刻考虑到:代码是否正确? 代码是否正确? 代码是否正确?...例如: 你可以利用不可变特性、构造时拷贝对象等方法来确保一个类可变 很多时候,考虑使用防御性拷贝,避免直接在原始实例上进行操作 接收参数时考虑参数是否非空等 是否引发性能问题、死锁问题 …… 三、...JDK 实现 JDK Collections 类提供以下不可变集合,用于开发者一些不可变需求: ? Guava 实现 同时,Guava亦提供以下不可变集合: ?

51340

2018-05-28 Google Guava官方教程(中文版)from ifeve.com

基本工具 [Basic utilities] 让使用Java语言变得舒适 1.1 使用和避免null:null是模棱两可,会引起令人困惑错误,有些时候它让人很不舒服。...集合[Collections] Guava对JDK集合扩展,这是Guava最成熟和为人所知部分 2.1 不可变集合: 用不变集合进行防御性编程和性能提升。...缓存[Caches] Guava Cache:本地缓存实现,支持多种缓存过期策略 4. 函数式风格[Functional idioms] Guava函数式支持可以显著简化代码,但请谨慎使用它 5....并发[Concurrency] 强大而简单抽象,让编写正确并发代码简单 5.1 ListenableFuture:完成后触发回调Future 5.2 Service框架:抽象可开启和关闭服务,...原生类型[Primitives] 扩展 JDK 未提供原生类型(如int、char)操作, 包括某些类型无符号形式 8. 区间[Ranges] 可比较类型区间API,包括连续和离散类型 9.

1.6K30

每日一讲:强大Google Guava类库(项目实战视频)

这些高质量 API 可以使你JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我们就开启优雅Java编程学习之旅!...很多 Guava 工具类在遇到 null 时会直接拒绝或出错,而不是默默地接受他们。   2. 前提条件:容易对你方法进行前提条件测试。   3....我们可以容易使用这些方法。 三. 缓存: 本地缓存,可以很方便操作缓存对象,并且支持各种缓存失效行为模式。 四....Functional idioms(函数式): 简洁, Guava实现了Java函数式编程,可以显著简化代码。 五....Concurrency(并发):强大,简单抽象,让我们容易实现简单正确并发性代码。   1.

66220

Guava学习笔记(2) --- Guava可变集合

/** * Guava可变集合用法 * * 创建对象可变集合是一种很好防御性编程技巧; * Guava为所有JDK标准集合类型Guava集合类型都提供了简单易用可变版本; *...* 1、不可变集合优点: * (1)当对象被不可信库调用时,不可变形式是安全; * (2)不可变对象被多个线程调用时,不存在竞态条件问题; * (3)不可变集合不需要考虑变化,...因此可以节省时间和空间; * (4)不可变对象因为有固定变化,可以作为常量来安全使用; * 2、JDK提供unmodifiableXXX方法笨重且累赘、不安全、低效; * 3、不可变集合三种创建方法...arrayList = new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3); //需要使用处理后可变集合...Collections.unmodifiableList(arrayList); test(arrayList); System.out.println(arrayList); //如果对不可变集合进行操作会报错

49020

还在使用集合类完成这些功能?不妨来看看 Guava 集合类!!!

扩展集合类 Guava 创造很多 JDK 没有,但是我们日常却明显有用新集合类型。这些新类型使用 JDK 集合接口规范,所以使用方法与 JDK 集合框架差不多,并没有增加很多使用难度。...a->[1,2,3] b->4,c->[6,5] 使用 Map + List 这种结构比较笨拙,并且代码实现也比较繁琐。Multimap 正式 Guava 中解决这种问题新出一个雷。...每次获取元素都将会使用 function 进行转化。...任何对创建之后 List 中元素进行修改,都不会生效。下次再次读取元素时,将会发现相应修改丢失了。。。 小黑哥之前就踩过这个坑,如果你有这种需求,可以使用以下方式创建一个新集合: ?...初始创建不可变集合时吗,需要传入数据源,创建完成之后,集合就再也不能修改,增加,删除元素,否则将会报错。 这是一种防御性策略,防止集合在后续操作中被修改,从而引发问题。

56730

别再造轮子了,Google 开源 Guava 工具库真心强大!

概述 不可变集合与对象 Guava 新集合类型 JDK 集合辅助工具类 JDK 基本类型辅助工具类 JDK 字符串辅助工具类 Stopwatch 秒表 ---- Google Guava 概述 1、Guava...项目地址:https://github.com/YunaiV/ruoyi-vue-pro 不可变集合与对象 1、制作对象可变副本是一种很好防御性编程技术,不可变对象有许多优点,包括: 可供不受信任库安全使用...线程安全:可由多个线程使用,无争用风险。 不需要支持突变,并且可以节省时间和空间,所有不可变集合实现都比它们可变同级节省内存。 可以用作常数,并期望它将保持不变。...Guava 设计上推荐使用 null 值,大多数情况下,遇到 null 值会抛异常. 3、一个不可变 ImmutableXxx 集合可以通过以下几种方式创建: 使用 copyOf 方法,如 ImmutableSet.copyOf...4、Guava 为 java jdk 每种标准集合类型提供了简单易用可变版本,包括 Guava 自己集合变体,为 java 提供可变版本都是继承 java jdk 接口而来,所以操作上基本无异

95231

别再重复造轮子了,推荐使用 Google Guava 开源工具类库,真心强大!

点击关注公众号,Java干货及时送达 Google Guava 概述 1、Guava 是一组来自 Google 核心 Java 库,包括新集合类型(如 multimap 和 multiset)、不可变集合...>guava   29.0-jre 不可变集合与对象 1、制作对象可变副本是一种很好防御性编程技术,不可变对象有许多优点...线程安全:可由多个线程使用,无争用风险。 不需要支持突变,并且可以节省时间和空间,所有不可变集合实现都比它们可变同级节省内存。 可以用作常数,并期望它将保持不变。...4、Guava 为 java jdk 每种标准集合类型提供了简单易用可变版本,包括 Guava 自己集合变体,为 java 提供可变版本都是继承 java jdk 接口而来,所以操作上基本无异...Java 创建对象 6 种方式 阿里为什么推荐使用 LongAdder? 新来一个技术总监:禁止戴耳机写代码。。 重磅!

1.5K40

一口气带你踩完五个 List 大坑,真的是处处坑啊!

List 可谓是我们经常使用集合类之一,几乎所有业务代码都离不开 List。既然天天在用,那就没准就会踩中这几个 List 常见坑。...不可变集合,说好不变,你怎么就变了 为了防止 List 集合被误操作,我们可以使用 Collections#unmodifiableList 生成一个不可变(immutable)集合,进行防御性编程。... unmodifiableList = ImmutableList.copyOf(list); 相比而言 Guava 方式比较清爽,使用也比较简单,推荐使用 Guava 这种方式生成不可变集合...修复办法有两种: 使用 Iterator#remove 删除元素 ? JDK1.8 List#removeIf ? 推荐使用 JDK1.8 这种方式,简洁明了。...第二 JDK 提供可变集合实际非常笨重,并且低效,还不安全,所以推荐使用 Guava可变集合代替。 最后,切记,不要随便在 foreach增加/删除元素。

1.3K31

一口气带你踩完五个 List 大坑!

可变集合,说好不变,你怎么就变了 为了防止 List 集合被误操作,我们可以使用 Collections#unmodifiableList 生成一个不可变(immutable)集合,进行防御性编程。...但是防过来,却不行,原始 List 随时都有可能被改动,从而影响不可变集合。 可以使用如下两种方式防止上卖弄情况。 使用 JDK9 List#of 方法。... unmodifiableList = ImmutableList.copyOf(list); 相比而言 Guava 方式比较清爽,使用也比较简单,推荐使用 Guava 这种方式生成不可变集合...修复办法有两种: 使用 Iterator#remove 删除元素 ? iterator JDK1.8 List#removeIf ? 推荐使用 JDK1.8 这种方式,简洁明了。...第二 JDK 提供可变集合实际非常笨重,并且低效,还不安全,所以推荐使用 Guava可变集合代替。 最后,切记,不要随便在 foreach增加/删除元素。

38620

初探Google Guava

基本工具 [Basic utilities] 让使用Java语言变得舒适 1.1 使用和避免null:null是模棱两可,会引起令人困惑错误,有些时候它让人很不舒服。...集合[Collections] Guava对JDK集合扩展,这是Guava最成熟和为人所知部分 2.1 不可变集合: 用不变集合进行防御性编程和性能提升。...缓存[Caches] Guava Cache:本地缓存实现,支持多种缓存过期策略 4. 函数式风格[Functional idioms] Guava函数式支持可以显著简化代码,但请谨慎使用它 5....并发[Concurrency] 强大而简单抽象,让编写正确并发代码简单 5.1 ListenableFuture:完成后触发回调Future 5.2 Service框架:抽象可开启和关闭服务,...基于容量回收: 规定缓存项数目超过固定值,只需使用CacheBuilder.maximumSize(long)。缓存将尝试回收最近没有使用或总体上很少使用缓存项。

1K20

Google guava工具类介绍和使用

guava优点: 高效设计良好API,被Google开发者设计,实现和使用 遵循高效java语法实践 使代码刻度,简洁,简单 节约时间,资源,提高生产力 Guava工程包含了若干被Google...("Java"))); System.out.println(fitered); // [Guava, Java] //自定义过滤条件 使用自定义回调方法对Map每个Value进行操作 ImmutableMap...,各种条件判断,各种 $%#$@# 而现在我们只需要使用guavaapi 就能使代码变得简洁,并且不用担心因为写错逻辑而背锅了 File file = new File("test.txt"); List...文件url Files类中还有许多方法可以用,可以多多翻阅 11.guava缓存 guava缓存设计比较巧妙,可以很精巧使用。...以上只是guava使用一小部分,guava是个大工具类,第一版guava是2010年发布,每一版更新和迭代都是一种创新。 jdk升级很多都是借鉴guava里面的思想来进行

3.8K30

Google guava工具类介绍和使用

高效设计良好API,被Google开发者设计,实现和使用 遵循高效java语法实践 使代码刻度,简洁,简单 节约时间,资源,提高生产力 Guava工程包含了若干被Google Java项目广泛依赖...2.所有不可变集合会比可变集合更有效利用资源。...,各种条件判断,各种%#@# 而现在我们只需要使用guavaapi 就能使代码变得简洁,并且不用担心因为写错逻辑而背锅了 1 2 3...11.guava缓存 guava缓存设计比较巧妙,可以很精巧使用。...---- 以上只是guava使用一小部分,guava是个大工具类,第一版guava是2010年发布,每一版更新和迭代都是一种创新。 jdk升级很多都是借鉴guava里面的思想来进行

1.6K10

共享可变状态中出现问题以及如何避免

在本文剩余部分,我们将介绍三种避免共享可变状态问题方法: 通过复制数据避免共享 通过无损更新来避免数据变动 通过使数据不可变来防止数据变动 针对每一种方法,我们都会回到刚才看到示例并进行修复。...简洁 `deepCopy()` 版本 如果我们使用 .map() 和 Object.fromEntries(),可以使以前 deepCopy() 实现更加简洁: 1function deepCopy...在修改它之前,我们需要通过复制(必要深度)来“取消共享”。 防御性复制是一种在问题可能出现时始终进行复制技术。...如果数据是不可变,则可以共享数据而没有任何风险。特别是无需防御性复制。 非破坏性更新是对不变数据补充,使其与可变数据一样通用,但没有相关风险。...也就是说,涉及特殊数据结构。

1.5K40

提升编程效率利器: 解析Google Guava库之IO工具类(九)

然后,我们使用Files.asCharSink将处理后内容写回文件。这种方式既利用了Guava简洁性,也利用了Java 8流操作强大功能。...下面是一个使用Guava库中Files工具类Java代码示例。展示如何使用Files工具类来创建临时文件、写入数据、读取数据、复制文件以及删除文件。...这种自动关闭机制可以大大减少因忘记关闭资源而导致错误和性能问题。 当然,下面是一个使用Guava库中CloserJava代码示例。...e.printStackTrace(); } } // 简洁写法是使用try-with-resources...然而,推荐做法是使用try-with-resources语句,这样可以简洁地管理资源,并且无需显式调用closer.close()。

12710

防御性编程

这些防御性编程环境通常构造方法有:添加声明到代码中,执行按契约进行设计,开发软件防御防火墙,或者简单添加用来验证用户输入代码。      ...测试工作不是防御性,这项工作可以验证代码现在是正确,但不能保证代码在经历将来修改之后不会出错。即便是拥有了世界上最好测试工具,也还是会有人对代码进行更改,并使代码进入过去未测试状态。...运行环境没有为程序提供足够服务;外部程序库运行失误,遵从你所依赖接口协议; 4、编码目标是清晰,不只是简洁      简单就是一种美,不要让你代码过于复杂。...避免由于这些隐患而受到攻击其实很简单:不要编写这样糟糕代码使用安全、不允许破坏程序数据结构——使用类似C++string类托管缓冲。或者 对不安全数据类型系统地使用安全操作。...通过把strcpy更换为有大小限制字符串复制操作strncpy,就可以使上面的C代码段得到保护。

1.3K80
领券