摘要:配置参数启动时校验如果配置文件没有相关的配置,那么启动时就会出现以下异常名字不能为空,请注意检查,参考值为肥朝。肥朝小声逼逼提高代码稳壮性,肥朝认为最好的办法就是提前预防。
配置参数启动时校验
如果配置文件没有相关的配置,那么**启动时**就会出现以下异常:
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); 如果配置文件没有相关的配置,那么**启动时**就会出现以下异常: ...
摘要:以下知识点是前辈师兄总结基础语义化标签引进了一些新的标签,特别注意等,注意的标题结构理解浏览器解析的过程,理解的树形结构,及相应理解标签在各个浏览器上的默认样式代理样式,理解中的重置样式表的概念理解等功能性标签理解标签,理解文件提交过程推荐 以下知识点是前辈师兄总结 1、HTML/HTML5基础: 1.0、语义化H5标签1.1、H5引进了一些新的标签,特别注意article...
摘要:以下知识点是前辈师兄总结基础语义化标签引进了一些新的标签,特别注意等,注意的标题结构理解浏览器解析的过程,理解的树形结构,及相应理解标签在各个浏览器上的默认样式代理样式,理解中的重置样式表的概念理解等功能性标签理解标签,理解文件提交过程推荐 以下知识点是前辈师兄总结 1、HTML/HTML5基础: 1.0、语义化H5标签1.1、H5引进了一些新的标签,特别注意article...
摘要:目前,有三个明确的框架可供选择。和在众多开源框架中赢得了开发人员和公司的信任。虽然这三个框架有许多共同之处,但它们的受欢迎程度因行业而异。使用,这有助于在编码时发现并纠正常见错误。 人们首先注意到的是你的应用程序的视觉吸引力。大多数用户倾向于将界面设计与公司的信誉和专业能力联系起来。这就是为什么选择正确的前端技术对你的业务...
摘要:开场白作为一个技术团队的,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的如果你的回答是差不多就行了,有问题再说,那么,你已经在给自己挖坑了。好的,成员们开始构建你定制的开发环境了。 开场白 作为一个技术团队的Leader,你是如何保证成员的开发环境达到公司的标准,或者是你定制的最低要求的?如果你的回答是:差不多就行了,有问题再说,那么,你已经在给自己挖坑了。 同事A...
阅读 682·2023-04-25 19:43
阅读 3854·2021-11-30 14:52
阅读 3729·2021-11-30 14:52
阅读 3794·2021-11-29 11:00
阅读 3745·2021-11-29 11:00
阅读 3812·2021-11-29 11:00
阅读 3528·2021-11-29 11:00
阅读 6007·2021-11-29 11:00