[SPRING] 스프링 부트 : @Value 또는 @ConfigurationProperties를 사용하여 yaml에서 목록 읽기
SPRING스프링 부트 : @Value 또는 @ConfigurationProperties를 사용하여 yaml에서 목록 읽기
yaml 파일 (application.yml)에서 호스트 목록을 읽으려는 경우 파일은 다음과 같습니다.
cors:
hosts:
allow:
- http://foo1/
- http://foo2/
- http://foo3/
(실시 예 1)
사용되는 클래스는 다음과 같은 값을 정의합니다.
@Value("${cors.hosts.allow}")
List<String> allowedHosts;
그러나 봄이 이것에 관하여 불평하기 때문에 독서는 실패한다 :
이와 같이 파일을 변경할 때 속성을 읽을 수는 있지만 자연스럽게 목록은 있지만 하나의 항목 만 포함합니다.
cors:
hosts:
allow: http://foo1, http://foo2, http://foo3
(나는 값을 한 줄로 읽고 ","로 나눌 수 있지만 아직 해결 방법을 원하지는 않는다)
이것은 (비록 내가 snakeyamls 워드 프로세서에 따라 유효하다고 생각하지만) 작동하지 않습니다 :
cors:
hosts:
allow: !!seq [ "http://foo1", "http://foo2" ]
(!! seq를 건너 뛰고 [/]를 사용하는 것 역시 실패 임)
@ConfigurationProperties를 사용하고 Java로 예제를 전송하고 Example1에서 볼 수있는 yaml 파일과 함께 사용한 제안을 읽었습니다.
@Configuration
@EnableWebMvc
@ConfigurationProperties(prefix = "cors.hosts")
public class CorsConfiguration extends WebMvcConfigurerAdapter {
@NotNull
public List<String> allow;
...
이 프로그램을 실행하면 다음과 같은 불만이 제기됩니다.
내 CORS 호스트를 구성 할 수있는 다른 방법을 찾고이 Spring Boot 문제를 발견했지만 아직 완료되지 않았기 때문에 솔루션으로 사용할 수 없습니다. 이 모든 것은 스프링 부트 1.3 RC1로 수행됩니다.
해결법
-
==============================
1.쉽습니다. 대답은이 문서와이 문서에도 있습니다.
쉽습니다. 대답은이 문서와이 문서에도 있습니다.
그래서, 당신은 이런 yaml을 가지고 있습니다 :
cors: hosts: allow: - http://foo1/ - http://foo2/ - http://foo3/
그런 다음 먼저 데이터를 바인딩합니다.
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import java.util.List; @Component @ConfigurationProperties(prefix="cors.hosts") public class AllowedHosts { private List<String> HostNames; //You can also bind more type-safe objects }
그런 다음 다른 구성 요소에서
@Autowired private AllowedHosts allowedHosts;
그리고 너 끝났어!
-
==============================
2.application.yml에서 쉼표로 구분 된 값을 사용하십시오.
application.yml에서 쉼표로 구분 된 값을 사용하십시오.
corsHostsAllow: http://foo1/, http://foo2/, http://foo3/
액세스 용 자바 코드
@Value("${corsHostsAllow}") String[] corsHostsAllow
나는 시도하고 성공했다;)
-
==============================
3.나는 아래와 같은 속성에서 목록을 읽을 수있었습니다.
나는 아래와 같은 속성에서 목록을 읽을 수있었습니다.
속성 -
cors.hosts.allow[0]=host-0 cors.hosts.allow[1]=host-1
읽기 속성 -
@ConfigurationProperties("cors.hosts") public class ReadProperties { private List<String> allow; public List<String> getAllow() { return allow; } public void setAllow(List<String> allow) { this.allow = allow; } }
from https://stackoverflow.com/questions/33369878/spring-boot-read-list-from-yaml-using-value-or-configurationproperties by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 도트를위한 JsonPath JUnit 이스케이프 문자 (0) | 2019.03.20 |
---|---|
[SPRING] Annotation을 통해 Spring Bean의 File 필드 채우기 (0) | 2019.03.20 |
[SPRING] Spring : constructor-arg를 annotation으로 대체하는 방법은 무엇입니까? [복제] (0) | 2019.03.20 |
[SPRING] Spring : FactoryBean.getObject () 대신 FactoryBean 객체 가져 오기 (0) | 2019.03.20 |
[SPRING] 스프링 쉘을 사용하여 스프링 부트 웹 애플리케이션에서 콘솔 명령을 작성하는 방법은 무엇입니까? (0) | 2019.03.20 |