资讯专栏INFORMATION COLUMN

【肥朝】用最低的成本,提高你的代码稳壮性

番茄西红柿 / 1883人阅读

摘要:配置参数启动时校验如果配置文件没有相关的配置,那么启动时就会出现以下异常名字不能为空,请注意检查,参考值为肥朝。肥朝小声逼逼提高代码稳壮性,肥朝认为最好的办法就是提前预防。

配置参数启动时校验

如果配置文件没有相关的配置,那么**启动时**就会出现以下异常:

Description: Binding to target com.toby.provide.ApplicationProperties@31da6b2e failed: Property: feichao.info.name Value: null Reason: 名字不能为空,请注意检查,参考值为:肥朝。

肥朝小声逼逼:提高代码稳壮性,肥朝认为最好的办法就是提前预防。实际项目中,我们在配置文件配置了各种参数。但是大家也知道,不同环境的配置参数,是会不一样的,难免会因为人为疏忽,导致某个环境的配置文件,少了一些关键参数,光靠肉眼来检查,必然是一个低效而又不可靠的方式。如果你不用该方式校验,很容易在某个特殊的场景下,才触发出坑。但是你采用这种方式,做了大量的启动时校验,一旦参数不合法,项目启动都启动不了,做到了防范于未然!

Controller

HelloDTO

@Data public class HelloDTO { @NotBlank private String name; @Min(0) @Max(150) private int age; }

HelloController

@RestController public class HelloController { @RequestMapping("/controllerValid") public String controllerValid(@RequestBody @Valid HelloDTO helloDTO) { return "ok"; } }

请求参数为

{ "name":"肥朝", "age" : 151 }

时,出现校验异常

org.springframework.web.bind.MethodArgumentNotValidException

Service

HelloDTO

@Data public class HelloDTO { @NotBlank private String name; @Min(0) @Max(150) private int age; }

AService

public interface AService { int insertUser(HelloDTO helloDTO); }

AServiceImpl

@Service public class AServiceImpl implements AService { @Autowired private BService bService; @Override public int insertUser(HelloDTO helloDTO) { return bService.insertUser(helloDTO); } }

BService

public interface BService { int insertUser(@Valid HelloDTO helloDTO); }

BServiceImpl

@Service @Slf4j @Validated public class BServiceImpl implements BService { @Override public int insertUser(HelloDTO helloDTO) { log.info("BService insertUser..."); return 0; } }

单元测试

@RunWith(SpringRunner.class) @SpringBootTest public class AserviceTest { @Autowired private BService bService; @Test public void testInsertUser() throws Exception { HelloDTO helloDTO = new HelloDTO(); bService.insertUser(helloDTO); } }

输出校验异常信息:

javax.validation.ConstraintViolationException

Dubbo

Dubbo官方文档中已经写得非常详细,地址为:dubbo.apache.org/zh-cn/docs/…

参数验证功能是基于 JSR303 实现的,用户只需标识 JSR303 标准的验证 annotation,并通过声明 filter 来实现验证。

maven依赖

javax.validation validation-api 1.0.0.GA org.hibernate hibernate-validator 4.2.0.Final

示例

参数标注示例

import java.io.Serializable; import java.util.Date; import javax.validation.constraints.Future; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; public class ValidationParameter implements Serializable { private static final long serialVersionUID = 7158911668568000392L; @NotNull // 不允许为空 @Size(min = 1, max = 20) // 长度或大小范围 private String name; @NotNull(groups = ValidationService.Save.class) // 保存时不允许为空,更新时允许为空 ,表示不更新该字段 @Pattern(regexp = "^s*w+();


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7171.html

相关文章

  • 肥朝最低成本提高代码壮性

    摘要:配置参数启动时校验如果配置文件没有相关的配置,那么启动时就会出现以下异常名字不能为空,请注意检查,参考值为肥朝。肥朝小声逼逼提高代码稳壮性,肥朝认为最好的办法就是提前预防。 配置参数启动时校验 showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09ee8f357e36); 如果配置文件没有相关的配置,那么**启动时**就会出现以下异常: ...

    int64 评论0 收藏0
  • [ 学习路线 ] 学完这些去阿里!GOGOGO

    摘要:以下知识点是前辈师兄总结基础语义化标签引进了一些新的标签,特别注意等,注意的标题结构理解浏览器解析的过程,理解的树形结构,及相应理解标签在各个浏览器上的默认样式代理样式,理解中的重置样式表的概念理解等功能性标签理解标签,理解文件提交过程推荐 以下知识点是前辈师兄总结 1、HTML/HTML5基础: 1.0、语义化H5标签1.1、H5引进了一些新的标签,特别注意article...

    zhaochunqi 评论0 收藏0
  • [ 学习路线 ] 学完这些去阿里!GOGOGO

    摘要:以下知识点是前辈师兄总结基础语义化标签引进了一些新的标签,特别注意等,注意的标题结构理解浏览器解析的过程,理解的树形结构,及相应理解标签在各个浏览器上的默认样式代理样式,理解中的重置样式表的概念理解等功能性标签理解标签,理解文件提交过程推荐 以下知识点是前辈师兄总结 1、HTML/HTML5基础: 1.0、语义化H5标签1.1、H5引进了一些新的标签,特别注意article...

    learn_shifeng 评论0 收藏0
  • 前端学习之JS框架使

    摘要:目前,有三个明确的框架可供选择。和在众多开源框架中赢得了开发人员和公司的信任。虽然这三个框架有许多共同之处,但它们的受欢迎程度因行业而异。使用,这有助于在编码时发现并纠正常见错误。 人们首先注意到的是你的应用程序的视觉吸引力。大多数用户倾向于将界面设计与公司的信誉和专业能力联系起来。这就是为什么选择正确的前端技术对你的业务...

    不知名网友 评论0 收藏0
  • 使Docker统一团队开发环境

    摘要:开场白作为一个技术团队的,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的如果你的回答是差不多就行了,有问题再说,那么,你已经在给自己挖坑了。好的,成员们开始构建你定制的开发环境了。 开场白 作为一个技术团队的Leader,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的?如果你的回答是:差不多就行了,有问题再说,那么,你已经在给自己挖坑了。 同事A...

    alin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<