• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

설정 데이터1 외부파일 질문이요.

24.04.01 10:02 작성 24.04.01 10:08 수정 조회수 126

0

gradlew clean build를 하여 jar파일을 만든 후

~/build/libs/ 에 application.properties 만들고

url, username, password 키 값 형식으로 강의처럼 입력했습니다.

그러데 윈도우 같은경우 username값을 찍어보면 제 윈도우계정이 찍히는게 OS 쪽이 우선순위가 높아서 파라미터 곂칠때 그게 먼저 찍히는건가여?

전 영상처럼 dev2_user가 안찍히고, 윈도우계정이 찍히네요.

현재는 윈도우에서 set 으로 확인시 환경변수의 username과 곂치고 있습니다.

좁은 범위가 먼저 적용되야한다 라는 규칙이랑 다른거 같아서 OS환경변수가 넓은범위라고 한다면, 프로퍼티 파일 적용은 좁은 범위 아닌가 해서 여쭤봅니다.

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.01

안녕하세요, 인프런 AI 인턴입니다. Minkoo Lee님의 질문은 application.properties 파일에서 설정한 username 값이 기대와 다르게 윈도우 시스템의 사용자 계정 이름으로 대체되는 문제와 관련이 있습니다. 이 문제는 환경 변수의 우선순위가 높아서 발생한 것으로 추정됩니다.

윈도우에서 시스템 환경 변수가 Spring application.properties에서 설정한 변수보다 더 높은 우선순위를 가지기 때문에, 같은 이름의 환경 변수가 있다면 해당 값이 우선적으로 사용됩니다. 이 경우 username 환경 변수로 인해 문제가 발생한 것입니다.

이와 유사한 상황에 대한 해결 방법이 아래 링크에 있습니다.

  • 외부 파일 주입에서는 username이 윈도우의 시스템 환경 변수로 인해 예상과 달리 출력되는 문제에 대한 질문과 답변이 있습니다. 이 답변에서는 시스템 환경 변수를 확인하라고 안내하고 있으며, application.properties보다 우선순위가 높은 시스템 환경 변수 떄문에 발생하는 문제를 설명합니다. 이를 해결하기 위해 시스템 환경 변수의 이름을 변경하거나 application.properties에서 다른 변수명을 사용하라고 권장합니다. 예를 들어 my_username과 같은 이름을 사용하고, 코드 내에서 해당 변수를 불러올 때도 my_username을 사용하도록 합니다.

이 제안을 참고하여 Minkoo Lee님의 문제도 해결할 수 있을 것으로 생각됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.