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