首页 > 解决方案 > 在 SpringBoot 中为验证提供默认值

问题描述

我希望 SpringBoot 能够为用户必须输入的字段提供默认值。例如,我有这样的事情:

*Controller class*
@PostMapping("/test")
public ResponseEntity<> myMethod(@RequestBody @Valid MyContract contract) {}

*MyContract class*

@Valid
DataObject dataObject;

*DataObject class*

@Component
public class DataObject {
   private @Value("${field1.default}") String field1Default;
   private String field1

   public String getField1() {
     return (field1 == null ? field1Default : field1);
   }
}

需要根据每个请求创建 DataObject 类。代码中还有其他地方需要按需创建。所以我想它需要是一个原型对象。但是我不知道如何让 Spring 在为请求创建它时正确创建它。

更新

我已经阅读了有关@RequstBody 的更多信息,例如https://www.javadevjournal.com/spring/spring-request-response-body/spring @RequestBody 类应该是单例还是原型?,这说明该对象不是一个组件,而是一个简单的 POJO,它从 Json 请求中获取值。所以似乎没有办法从 Spring application.properties 文件中注入 @Values 。有没有其他方法可以解决这个问题?或者另一个建议的实现?

标签: spring-bootvalidation

解决方案


推荐阅读