properties 파일 스캐닝 규칙

Reading-Snail·2024년 2월 10일
0

스프링 부트의 파일 자동 스캐닝 기능을 오해하여 헤매는 경험을 하였습니다. 설정에 따른 정확한 기능과 차이를 기록해주려고 합니다

우선 잘못 알고 있었던 것은 자동 스캐닝은 .properties 파일을 자동으로 스캐닝 하는 것이 아닌 application.properties 파일을 기본 경로인 classpath:/ 와 classpath:/config 에서 자동으로 스캐닝 하는 것이었습니다.

하여 application-database.properties 또는 database.properties 파일이 자동으로 위의 경로에 저장되어 있더라도 스캐닝이 되지 않는 것이 정상이었습니다.

설정 파일 스캐닝 관련 설정들을 정리해보면 아래와 같습니다.

  • 스프링 부트는 application.properties / application.yml 파일을 classpath:/ / classpath:/config 에서 자동으로 스캐닝 한다.
  • 자동 스캐닝할 경로를 추가로 지정해주고 싶다면 spring.config.location으로 경로를 지정하면 된다. classpath:/ / classpath:/config 에 추가로 다른 경로를 설정한다고 생각하면 된다.
  • 단, 위의 경로 지정으로 파일의 설정 값을 가져오는 것은 아니다. 추가적으로 spring.config.import로 파일이름을 지정해주어야 된다. 그러면 spring.config.location 또는 기본 경로에서 해당 파일의 설정값을 불러오게 된다.

다시 돌이켜보면 당연한 사실들인데 하나에 꽂히고 나니 생각의 틀에서 벗어나기 어려웠다.

.properties 형식을 사용한다면 여러 파일을 추가할 때 spring.config.import을 매번 추가해주어 가독성을 올려주면 좋을 듯 합니다. .yml은 자체로 가독성이 높을 수 있게 여러 파일을 나열 할 수 있어 괜찮은 것 같습니다.

P.S. 설정이 적용이 되었는지 확인하는 과정에 db설정 값을 사용했는데 h2 의존성이 추가 되어있어 서버 실행 시 database가 지정되어있지 않다는 오류를 뱉어내지 않는 경우들이 있어 더 오해가 커졌었습니다. 의존성 설정에 따라 설정 값이 달라지는 스프링 부트의 특징을 잘 알고 사용해야 될 듯 합니다.

profile
책읽는 달팽이 || 공학도에서 개발자로! || 결국 과거의 흐름을 이해했을 때 지금의 것들을 통찰력있게 바라볼 수 있다고 믿습니다.

0개의 댓글

관련 채용 정보