java - 在 Spring Boot 上使用 ConfigurationProperties 时获取空值

标签 java spring

我是 Java 世界和 Spring 引导的新手,我正在尝试通过 ConfigurationProperties 访问位于 YAML 文件中的一些配置值。注解。

但是,每当我尝试访问服务中任何位置的配置值时,都会得到一个空值。

这是application.yml文件:

my_config:
  test: "plop"

这是ValidationProperties配置类:
@Configuration
@ConfigurationProperties(prefix = "my_config")
public class ValidationProperties {

    @NotNull
    private String test;

    public void setTest(String test) {
        this.test = test;
    }

    public String getTest() {
        return this.test;
    }
}

使用它的 validator 服务:
@Service
public class MyValidator implements ConstraintValidator<MyConstraint, MyEntity> {

    @Autowired
    private ValidationProperties validationProperties;

    @Value("${my_config.test}")
    private String test;

    @Override
    public boolean isValid(MyEntity entity, ConstraintValidatorContext context) {

        System.out.println(this.test); // null value, why?
    }
}

我还添加了 @EnableConfigurationProperties我的主要类(class)中的注释。

我不确定哪个注释应该做什么,但我显然在这里遗漏了一些东西。此外,如果我尝试从配置文件的 getter 访问值,我会得到一个异常:
System.out.println(this.validationProperties.getTest());

会得到我HV000028: Unexpected exception during isValid call.

最佳答案

尝试添加 @EnableConfigurationProperties(ValidationProperties.class)在您的主应用程序类或任何其他 @Configuration类(class)。
还放@Component ValidationProperties 上的注释应该可以工作。
无需通过 @Value 注入(inject)值(value)注释,只需通过注入(inject) validationProperties 的 getter 访问它目的

关于java - 在 Spring Boot 上使用 ConfigurationProperties 时获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44368498/

相关文章:

java - 将 POST 数据从一个 servlet 调用到另一台服务器

java.lang.ClassNotFoundException : org. aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException 异常

java - 如何放置正确的 DBFLow 注释

java - 为什么我找不到 SSL 握手的信任库?

java - 在 Spring 2.5 中注册关闭钩子(Hook)

java - 如何捕获cassandra中条件插入的返回值?

java - Swing 布局 - 在保持组件尺寸的同时使用网格

java - 防止 gradle.properties 扩展

spring - 在Spring :message tag when using SimpleMappingExceptionResolver中访问exception.class.name

java - 如何使用Spring data JPA保存双向关联而不进行级联?