之前有一篇 Java 的参数检查与断言 介绍了在 Java 中如何应用 Guava 的 Preconditions 来进行参数检查与状态断言,原本是可以心无旁骛,专心的用它就行了,可是刚刚因琢磨我们使用 JdbcTemplate 存在的一大 Bug,阅读 Spring 的源代码时发现 spring-util 也提供了一个类似于 Gruva Preconditions 的工具类 -- Assert,它是自 Spring 1.1.2 开始就静静的躺在那儿了。
所以现在要检查参数或状态断言时反而犯上了选择综合证,虽然内心还是偏向于 Guava Preconditions,但总之不那么坚决了,也不知到底是谁在重新发明着轮子。可以说 Spring Assert 与 Guava Preconditions 的功能基本一致,也是针对入口参数或中间运行结果的检查分别抛出 IllegalArgumentException
和 IllegalStateException
. 下面一张图来了解它的所有方法。
对于每一种状况的检查都有提供两个版本的重载方法,带错误消息与不带错误消息的版本。除最后两个 state() 方法抛出 IllegalStateException
外, 其他方法都是在条件不成立时抛出IllegalArgumentException
.
知道有这么一个东西的存在就够了,看到它的方法就会调用,Assert 的全限类名是 org.springframework.util.Assert
. 关于参数检查与状态断言我们又多了一个选择,这个多一种选择并意味着多一条路子的便利,反而是多了一重迷茫。
现在我想要使用某个工具类的时候,如 CollectionUtil, StringUtil 之类,我选择的优先顺序依次是 Guava, Apache Commons, 最后才是 Spring Util,基本上 Guava 是每个项目中必备的了。
本文链接 https://yanbin.blog/java-assertion-spring-assert/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。