[SPRING] Spring 부트 : Spring은 .properties 파일에 존재 함에도 불구하고 항상 디폴트 값을 속성에 할당합니다.
SPRINGSpring 부트 : Spring은 .properties 파일에 존재 함에도 불구하고 항상 디폴트 값을 속성에 할당합니다.
스프링 4.0.7을 사용하는 스프링 부트 1.1.8과 함께 일하고 있습니다. @Value 주석을 사용하여 클래스의 속성을 autowiring하고 있습니다. 속성이 속성 파일에 없으면 기본값을 갖고 싶기 때문에 ":"을 사용하여 기본값을 할당합니다. 아래는 그 예입니다 :
@Value("${custom.data.export:false}")
private boolean exportData = true;
프로퍼티가 프로퍼티 파일에 존재하지 않으면 변수에 false를 할당해야합니다. 그러나 파일에 특성이 있으면 기본 값을 지정하고 특성 값을 무시합니다. 예 : 위에 언급 한 것과 같은 속성을 정의하고 응용 프로그램 속성 파일에 custom.data.export = truethen과 같은 내용이있는 경우 exportData의 값은 여전히 false이지만 실제로는 이상적이어야합니다.
아무도 내가 여기서 뭘 잘못하고 있는지 안내 해줄 수 있습니까?
감사
해결법
-
==============================
1.우리는 정확히 같은 증상을 가진 다음의 Spring 버그에 물렸다 :
우리는 정확히 같은 증상을 가진 다음의 Spring 버그에 물렸다 :
[SPR-9989] PropertyPlaceholderConfigurer를 여러 개 사용하면 @Value 기본 값 동작이 깨집니다.
기본적으로 두 개 이상의 PropertyPlaceholderConfigurer가 ApplicationContext에 존재하면 사전 정의 된 기본값 만 해석되고 재정의는 발생하지 않습니다. 다른 ignoreUnresolvablePlaceholders 값을 설정해도 문제에 영향을 미치지 않으며 추가 PropertyPlaceholderConfigurer를 제거한 후에 두 값 (true / false)이 똑같이 잘 작동합니다.
이것을 살펴보면, 정의 된 PropertyPlaceholderConfigurer 각각은 내부적으로 예상대로 속성을 해석했지만 Spring은 @Value 주석이있는 필드 / params에 값을 삽입하기 위해 Spring을 사용할 수없는 것을 알아낼 수 없습니다.
-
==============================
2.이 문제를 극복하기 위해 다음 중 하나를 수행 할 수 있습니다.
이 문제를 극복하기 위해 다음 중 하나를 수행 할 수 있습니다.
bean> bean? 나는이 문제에 대해 RnD를 해왔다.
-
==============================
3.@Ophir Radnitz가 말했듯이, 이것은 ApplicationContext에 PropertyPlaceholderConfigurer가 두 개 이상 존재할 때 발생하는 스프링 버그입니다.
@Ophir Radnitz가 말했듯이, 이것은 ApplicationContext에 PropertyPlaceholderConfigurer가 두 개 이상 존재할 때 발생하는 스프링 버그입니다.
이 문제를 해결하려면 다음과 같이 원하는 동작을 얻을 수 있습니다.
(...) @Autowired private Environment environment; (...) private Boolean shouldExportData() { return environment.getProperty( "custom.data.export", Boolean.class, Boolean.FALSE ); }
from https://stackoverflow.com/questions/28369582/spring-boot-spring-always-assigns-default-value-to-property-despite-of-it-bein by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Letchy를 가져 오지 않는 FetchType.LAZY가있는 ManyToOne을 최대 절전 모드로 만듭니다. (0) | 2019.02.13 |
---|---|
[SPRING] 여러 로그인 양식, 다양한 인증 관리자 - 최신 스프링 보안 (0) | 2019.02.13 |
[SPRING] <S extends T> save (S 엔티티) 란 무엇을 의미합니까? Spring Repository에서? (0) | 2019.02.13 |
[SPRING] JMockit을 사용하여 자동 인터페이스 구현 구현하기 (0) | 2019.02.13 |
[SPRING] log4j2로 작성되지 않은 스프링 로그 (0) | 2019.02.13 |