programing

옵션으로서 @Value를 정의하는 방법

mbctv 2023. 3. 17. 21:55
반응형

옵션으로서 @Value를 정의하는 방법

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

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

값이 올바르게 삽입되었습니다.단, 변수는 옵션이어야 하며 명령줄 매개 변수로 전달되며(이 매개 변수는 Simple Command Line Property Source를 사용하여 Spring 컨텍스트에 추가됨), 이 인수가 항상 존재하는 것은 아닙니다.

디폴트값을 설정하기 위해 다음 두 가지를 시도했습니다.

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

그러나 어느 경우든 실제 값이 있는 경우에도 콜론이 주입된 후 기본 인수는 스프링이 주입해야 하는 값을 덮어씁니다.

@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
}

도움이 됐으면 좋겠다!

설정 속성을 옵션으로 할 경우 다음과 같은 빈 문자열을 전달합니다.

@Value("${app.optional.value:}")

다중 콘텍스트를 사용하고 있는 것 같습니다.property-placeholder/declarations?

이 경우 이는 2012년 이후 알려진 문제이지만 수정되지 않은 것은 분명 관심 부족과 해결 방법이 없기 때문입니다.자세한 내용은 https://github.com/spring-projects/spring-framework/issues/14623를 참조해 주세요.http://www.michelschudel.nl/wp/2017/01/25/beware-of-multiple-spring-propertyplaceholderconfigurers-and-default-values/에 의해 알기 쉽게 설명되어 있습니다.

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

반응형