Programing

@Value를 선택 사항으로 정의하는 방법

lottogame 2020. 8. 28. 07:46
반응형

@Value를 선택 사항으로 정의하는 방법


스프링 빈에 다음이 있습니다.

@Value("${myValue}")
private String value;

값이 올바르게 주입되었습니다. 그러나 변수는 선택 사항이어야하며 명령 줄 매개 변수로 전달되며 ( SimpleCommandLinePropertySource를 사용하여 Spring 컨텍스트에 추가됨 )이 인수가 항상 존재하는 것은 아닙니다.

기본값을 제공하기 위해 다음 두 가지를 모두 시도했습니다.

@Value("${myValue:}")
@Value("${myValue:DEFAULT}")

그러나 각각의 경우, 실제 값이 있더라도 콜론 뒤의 기본 인자가 주입됩니다. 이것은 Spring이 주입해야하는 것을 덮어 씁니다.

@Value 가 필요하지 않음 을 지정하는 올바른 방법은 무엇입니까 ?

감사


@Value가 필요하지 않음을 지정하는 올바른 방법은 무엇입니까?

'필요하지 않음'이라는 가정하에 작업하면 null...

:문자 오른쪽에 기본값을 제공 할 수 있음을 올바르게 지적했습니다 . 귀하의 예는 @Value("${myValue:DEFAULT}").

기본값은 일반 문자열로 제한되지 않습니다. SPEL 표현식을 사용할 수 있으며 리턴 할 간단한 SPEL 표현식 null은 다음과 같습니다.

@Value("${myValue:#{null}}")

Java 8을 사용하는 경우 해당 java.util.Optional클래스를 활용할 수 있습니다 . 다음과 같이 변수를 선언하면됩니다.

@Value("${myValue:#{null}}")
private Optional<String> value;

그런 다음 값이 더 좋은 방식으로 정의되었는지 여부를 확인할 수 있습니다.

if (value.isPresent()) {
    // do something cool
}

도움이 되었기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/23348061/how-to-define-value-as-optional

반응형