springboot 3应用程序yml属性@value

问题描述 投票:0回答:1

在我的 application.yml 中我有以下内容

cors-allowed-origins:
  url-origins:
     - http://host.docker.internal:81/
     - http://localhost:8081/*
     - http://digitale.com/
     - http://share.com/

第一个记录

@ConfigurationProperties( "cors-allowed-origins" )
public record CrosAllowedOrigins(List<String> urlOrigins) {

}

Could you please help me out or even tell me what s wrong thanks

在我注入值的类中

public class SecurityConfig {
    @Value("${cors-allowed-origins.url-origins}")
    private List<String> allowedOrigins;

我已经启用了主类中的属性

 @EnableConfigurationProperties({ CrosAllowedOrigins.class})

它构建完美,但是当我运行该应用程序时,我收到此错误:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'cors-allowed-origins.url-origins' in value "${cors-allowed-origins.url-origins}"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180) ~[spring-core-6.0.13.jar:6.0.13]
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126) ~[spring-core-6.0.13.jar:6.0.13]
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239) ~[spring-core-6.0.13.jar:6.0.13]
    at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210) ~[spring-core-6.0.13.jar:6.0.13]
    at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:200) ~[spring-context-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:918) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1358) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:764) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:747) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:492) ~[spring-beans-6.0.13.jar:6.0.13]
    ... 17 common frames omitted
java properties record spring-boot-3
1个回答
0
投票

我找到了解决该问题的方法,因此我没有将 Spring 的 @Autowired 注释与 @Value 一起使用,而是通过构造函数注入值,并且效果很好。

@RequiredArgsConstructor public class SecurityConfig  { //  @Value("${cors-allowed-origins.url-origins}") private final CrosAllowedOrigins allowedOrigins;

© www.soinside.com 2019 - 2024. All rights reserved.