当前位置: 首页 > 知识库问答 >
问题:

使用环境变量进行spring boot验证

魏威
2023-03-14

我想把一个spring boot环境变量的值放入一个验证注释(@min,@max),但我不知道怎么做。下面是我的代码:

public class MessageDTO {

@Value("${validationMinMax.min}")
private Integer min;

@JsonProperty("Message_ID")
@NotBlank(message = "messageId cannot be blank.")
@Pattern(regexp = "\\w+", message = "messageId don't suits the pattern")
private String messageId;

@JsonProperty("Message_Type")
@NotBlank(message = "messageType cannot be blank")
private String messageType;

@JsonProperty("EO_ID")
@NotBlank(message = "eoId cannot be blank")
private String eoId;

@JsonProperty("UI_Type")
@NotNull(message = "uiType cannot be null")
@Min(1)
@Max(3)
private Integer uiType;

这是我的application.yml:

server:
  port: 8080 
spring:
  data:
    cassandra:
      keyspace-name: message_keyspace
      port: 9042
      contact-points:
        - localhost

validationMinMax:
  min: 1
  max: 3

我想把我的yml的字段“min”和“max”放入我的属性uitype的注释字段@min()和@max()中。有人知道怎么做吗?提前感谢您的帮助!

共有1个答案

濮冠宇
2023-03-14

您可以使用自定义验证器编写自己的验证注释。在这个验证器中,您可以自动生成spring bean并注入配置属性:

@Target({ TYPE, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = { MyValidator.class })
@Documented
public @interface MyValidationAnnotation {
    String message() default "";

    Class<?>[] groups() default {};

    Class<? extends javax.validation.Payload>[] payload() default {};
}

验证器类:

java prettyprint-override">public class MyValidator implements ConstraintValidator<MyValidationAnnotation, Integer> {

    @Autowired
    private MyService service;

    public void initialize(MyValidationAnnotation constraintAnnotation) {
      // ...
    }

    public boolean isValid(Integer value, ConstraintValidatorContext context) {
      if(service.validate(sample)) {
        return true;
      } else {
        return false;
      }
    }

}

然后使用它:

@MyValidationAnnotation
Integer foo;
 类似资料:
  • 在SpringBoot中读取环境变量的最佳方法是什么? 在Java中,我使用了以下方法: 是否可以使用注释来实现?

  • 问题内容: 我有以下情形:我定义了一个env变量,并想在nginx块中使用它。参考nginx文档,我在文件中使用伪指令,如下所示: 现在我想将变量用于。我尝试如下所示: 但我最终收到以下错误消息: 问题答案: 正确的用法是,但是从nginx.conf设置的环境变量不能在服务器,位置或http块中使用。 如果使用openresty包(包括Lua),则可以使用环境变量。

  • 本文向大家介绍SpringBoot+docker环境变量配置详解,包括了SpringBoot+docker环境变量配置详解的使用技巧和注意事项,需要的朋友参考一下 项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结: 1.开发环境ide中启动项目 可以通过ide的环境变量参数配置,启动之后使用哪个配置,比如 这样就使用application-test.yml中的

  • Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。 全局行为 像通常的程序一样,Git 的常规行为依赖于环境变量。 GIT_EXEC_PATH 决定 Git 到哪找它的子程序 (像 git-commit

  • Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。 HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。

  • 环境变量 vue-element-admin 4.0 之后是基于 vue-cli来进行构建,所以所有的环境变量配置都是基于vue-cli来实现和控制的。 官方文档 .env # 在所有的环境中被载入 .env.[mode] # 只在指定的模式中被载入 一个环境文件只包含环境变量的“键=值”对: FOO=bar VUE_APP_SECRET=secre