• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

외부 설정과 관련된 질문입니다.

22.04.15 10:29 작성 조회수 115

0

[질문]

@Value로 정의된 값을 특정 클래스에서만 다르게 값을 재정의 할 수 있나요?

[내용]

....->a->b->c->.... 순서로 읽히는 클래스가 있을 때 (....은 이전, 이후 클래스들 입니다.)

a와 a이전 클래스들, c와 c이후 클래스들은 외부설정의 우선순위(3) application.properties 파일의 key, value를 읽고

b에서만 외부설정의 우선순위(13) @TestProperty로 해당 key, value를 재정의 한 값을 읽히려고 합니다.

결국 ....(3)->a(3)->b(13)->c(3)->....(3)을 의도하였는데

위와 같이 세팅을 하고 나서 run하면

....(3)->a(3)->b(13)->c(13)->....(13)이 되어버립니다.

투박하지만 c에서 다시 @TestProperty와 같은 상위 외부 설정을 통해 다시 Override하면 되겠지만, 추후 클래스가 추가되는 경우엔 굉장히 비효율적이라고 생각해서 어렵네요.

의도하고자 한 내용대로 구현하는 방법이 있을까요?

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

시나리오가 조금 복잡하네요. 특정 클래스에서만 @Value에 들어가는 값을 다른 곳에서 읽어오겠다는 것이죠? 그런건 어려울 것 같네요. 사용될 모든 프로퍼티는 애플리케이션 구동시 이미 우선순위에 따라 결정이 되어 있기 때문에 특정 클래스에선 다른 곳에서 값을 읽어오고 싶다면 스프링 부트가 제공하는 프로퍼티 로딩 메커니즘이 아닌 직접 구현한 방법을 이용하는게 좋겠습니다.

넵 매끄럽게 설명드리지 못하였는데, 답변 감사드립니다.
'애플리케이션 구동시 이미 우선순위에 따라 결정' 이 핵심이군요