봄의 @Value 기본값으로 null을 설정할 수 있습니까?
현재 @Value Spring 3.1.x 주석을 다음과 같이 사용하고 있습니다.
@Value("${stuff.value:}")
private String value;
Atribute가 존재하지 않는 경우 빈 String이 변수에 추가됩니다.빈 문자열 대신 null을 기본값으로 하고 싶습니다.물론 property stuff.value가 설정되어 있지 않은 경우에도 오류를 피하고 싶습니다.
이것은 매우 오래된 것입니다만, 지금은 Spring EL을 사용할 수 있습니다.
@Value("${stuff.value:#{null}}")
이 질문을 보세요.
@vorburger 덕분에:
@Value("${email.protocol:#{null}}")
String protocol;
는 다른 설정 없이 문자열 값을 늘로 설정합니다.
PropertyPlaceholderConfigr의 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" ... />
스프링 3.1.1로 테스트 완료
"null-value"에 대해 몰랐기 때문에 @nosebrain에게 공로를 인정하지만, 특히 표현하기 어렵기 때문에 null 값을 모두 사용하는 것은 피하고 싶다.null
속성 파일에 있습니다.
하지만 여기 null과 out을 사용하는 대안이 있습니다.null-value
부동산 플레이스 홀더와 함께 사용할 수 있습니다.
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;
}
}
개인적으로 나는 내 방식을 선호한다 왜냐하면 아마도 나중에 당신이 원하기 때문이다.stuff.value
콤마 구분값으로 하거나 Enum으로 하는 것이 스위치를 쉽게 할 수 있습니다.유닛 테스트도 간단합니다.
편집: Enum 사용에 대한 귀하의 의견과 null을 사용하지 않겠다는 제 의견을 바탕으로 합니다.
@Component
public class MyObject {
@Value("${crap:NOTSET}")
private Crap crap;
public enum Crap {
NOTSET,
BLAH;
}
}
저는 위의 내용으로 괜찮습니다.null을 피합니다.속성 파일이 처리하지 않으려는 것을 명시적으로 설정할 경우 처리합니다(단, 기본적으로 NOTSET로 설정되므로 지정할 필요도 없습니다).
crap=NOTSET
null
매우 나쁘고 다르다NOTSET
스프링이나 유닛 테스트에서 설정되지 않았다는 의미이므로 IMHO의 차이가 있습니다.단위 테스트에서는 개인 변수를 설정하기 어렵기 때문에 세터 표기법(이전 예)을 사용할 수 있습니다.
빈(0길이) 문자열을 @Value default로 삽입해야 할 경우 다음과 같이 SPEL(스프링 표현 언어)을 사용합니다.
@Value("${index.suffix:#{''}}")
private String indexSuffix;
#{'}는 삽입된 @Value의 기본값으로 빈 문자열을 가져옵니다.
일년까지
언급URL : https://stackoverflow.com/questions/11991194/can-i-set-null-as-the-default-value-for-a-value-in-spring
'programing' 카테고리의 다른 글
MariaDB의 Qcache_hits와 Com_select가 함께 증가합니다. (0) | 2023.02.03 |
---|---|
하위 쿼리에서 열을 두 개 이상 선택할 수 없는 이유는 무엇입니까? (0) | 2023.02.03 |
대기열 테이블에서 사용자 위치를 가져오는 데 너무 느립니다. (0) | 2023.01.24 |
MySQL에서 중복된 값 찾기 (0) | 2023.01.24 |
Vue Router, 새로 고침 시 공백 페이지가 표시됨 (0) | 2023.01.24 |