ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @Value 주석을 사용하여 Spring Boot에 속성 주입
    카테고리 없음 2020. 8. 17. 02:11

    질문

    응용 프로그램에 Spring과 Java를 사용하고 있으며 @Value주석을 사용하여 속성 값을 주입하고 싶습니다. 내 사용 사례는 해당 속성이 시스템으로 존재하는지 먼저 확인하는 것입니다. 속성 (우선 순위를 가짐), 그렇지 않으면 기본 구성 속성 (속성 파일에 있음)

    주석이 달린 코드에서 내가 달성하려는 것을 볼 수 있습니다. 단순한 문자열이 아닌 다른 것을 기본값으로 사용할 수 있습니까? 그렇지 않은 경우 어떻게 할 수 있습니까?

    //@Value("#{configProperties['local.datasource.username']}") THIS IS THE ORIGINAL CODE
    //@Value("#{systemProperties['some.key'] ?: 'my default system property value'}") THIS IS HOW SPRING PROPOSE TO SET A DEFAULT VALUE
    //@Value("#{systemProperties['some.key'] ?: #{configProperties['local.datasource.username']}}") THIS IS WHAT I WANT TO ACHIEVE, HOWEVER NOT COMPILING,
    private String username;

    답변1

    찾고있는 것은 간단한 속성 placeholder입니다.

    Spring Expression Language # {}구문 (삼항, 호출, 표현식, 수학), 속성 값 및 기본값 삽입은 대부분의 경우 간단한 속성 placeholder $ {value : defaultValue} 접근 방식 :

    @Property("${some.key:local.datasource.username}")
    private String username;

    여기서 some.key 가 (원본과 무관하게) 해결되고 그것이 null 인 경우 Spring은 기본적으로 local.datasource.username 의 값을 사용합니다.

    some.key 가 있더라도 Spring은 기본 속성을 해결할 수 없을 때 예외를 던질 것입니다.

    또한보십시오:



     

     

     

     

    출처 : https://stackoverflow.com/questions/62679541/injecting-propery-in-springboot-using-value-annotation

    댓글

Designed by Tistory.