gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:40:38 27 4
gpt4 key购买 nike

我是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com