[SPRING] Spring에서 @Value의 기본값으로 null을 설정할 수 있습니까?
SPRINGSpring에서 @Value의 기본값으로 null을 설정할 수 있습니까?
현재 @Value Spring 3.1.x 주석을 다음과 같이 사용하고 있습니다.
@Value("${stuff.value:}")
private String value;
속성이없는 경우 빈 문자열을 변수에 넣습니다. 빈 문자열 대신 기본값으로 null을 갖고 싶습니다. 물론 stuff.value 속성이 설정되지 않았을 때 오류를 피하기를 원합니다.
해결법
-
==============================
1.PropertyPlaceholderConfigurer의 nullValue를 설정해야합니다. 예를 들어, @null이라는 문자열을 사용하고 있지만 빈 문자열을 nullValue로 사용할 수도 있습니다.
PropertyPlaceholderConfigurer의 nullValue를 설정해야합니다. 예를 들어, @null이라는 문자열을 사용하고 있지만 빈 문자열을 nullValue로 사용할 수도 있습니다.
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- config the location(s) of the properties file(s) here --> <property name="nullValue" value="@null" /> </bean>
이제 @null이라는 문자열을 사용하여 null 값을 나타낼 수 있습니다.
@Value("${stuff.value:@null}") private String value;
참고 : 컨텍스트 이름 공간은 현재 null 값을 지원하지 않습니다. 사용할 수 없습니다.
<context:property-placeholder null-value="@null" ... />
Spring 3.1.1에서 테스트 됨
-
==============================
2.이것은 정말로 오래되었지만 Spring EL을 사용할 수 있습니다.
이것은 정말로 오래되었지만 Spring EL을 사용할 수 있습니다.
@Value ( "$ {stuff.value : # {null}}")
이 질문을보십시오.
-
==============================
3.@vorburger에게 감사드립니다.
@vorburger에게 감사드립니다.
@Value("${email.protocol:#{null}}") String protocol;
다른 설정없이 문자열 값을 null로 설정합니다.
-
==============================
4.나는 "null-value"에 대해 몰랐기 때문에 @nosebrain 크레디트를 주지만, 특히 프로퍼티 파일에서 null을 표현하기가 어렵 기 때문에 null 값을 사용하지 않는 것을 선호합니다.
나는 "null-value"에 대해 몰랐기 때문에 @nosebrain 크레디트를 주지만, 특히 프로퍼티 파일에서 null을 표현하기가 어렵 기 때문에 null 값을 사용하지 않는 것을 선호합니다.
그러나 null 값을 사용하여 null을 사용하는 대안이 있습니다. 그래서 이제까지 어떤 속성 자리 표시 자와도 작동합니다.
public class MyObject { private String value; @Value("${stuff.value:@null}") public void setValue(String value) { if ("@null".equals(value)) this.value = null; else this.value = value; } }
개인적으로 나는 아마 나중에 물건을 원하기 때문에 내 방식을 선호합니다. 가치는 쉼표로 구분 된 값이거나 Enum 스위치가 더 쉬울 수 있기 때문입니다. 그것도 단위 테스트를 쉽게 :)
편집 : enums 및 null을 사용하지 않는 내 의견을 사용하여 귀하의 의견을 기반으로.
@Component public class MyObject { @Value("${crap:NOTSET}") private Crap crap; public enum Crap { NOTSET, BLAH; } }
위의 작품은 나를 위해 잘 작동합니다. 당신은 null을 피합니다. 속성 파일이 처리하기를 원하지 않는다고 명시 적으로 설정하려는 경우 (하지만 NOTSET을 기본값으로 사용하므로 지정하지 않아도됩니다).
crap=NOTSET
null은 매우 나쁘고 NOTSET과 다릅니다. 그것은 스프링 또는 유닛 테스트가 IMHO에 차이점이있는 이유를 설정하지 않았 음을 의미합니다. 나는 아마도 setter 표기법 (이전 예)을 사용하여 단위 테스트를 더 쉽게 수행 할 것입니다 (개인 변수는 단위 테스트에서 설정하기가 어렵습니다).
from https://stackoverflow.com/questions/11991194/can-i-set-null-as-the-default-value-for-a-value-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 하이버 네이트 세션이 쓰레드에 바인드되지 않았고, 컨피규레이션은 비 - 트랜젝션 세션의 생성을 허용하지 않는다. (0) | 2019.03.03 |
---|---|
[SPRING] 스프링 부트를 사용하지 않고 스프링 휴식 서비스 만들기 (0) | 2019.03.03 |
[SPRING] 최고의 스프링 배치 스케일링 전략 (0) | 2019.03.02 |
[SPRING] 스프링 보안을 이용한 싱글 사인온 통합 (0) | 2019.03.02 |
[SPRING] 요청 매개 변수를위한 커스텀 Spring 애노테이션 (0) | 2019.03.02 |