config.properties 파일에 키 값 보관

Jung·2021년 11월 9일
1

TIL

목록 보기
48/77
post-thumbnail
post-custom-banner

스프링부트에서 open api를 사용하면서 노출되면 곤란한 키 값을 숨기는 방법을 찾아봤다.

그 중 하나는 config.properties 파일을 만들어서 api 시크릿 키 값을 저장하는 것이다.

그 후 키 값이 사용되는 곳에서 config.properties 파일을 불러오면 된다.

아 그리고 github에 config.properties 파일이 올라가면 안 되기 때문에 꼭 .gitignore 파일에 config.properties 추가하자!

키 값이 들어가는 파일

@PropertySource(classpath)의 root 경로: src/main/resources

config.properties

파일 위치(경로): src/main/resources/config.properties

.gitignore

### 키 값 저장되어 있는 파일 노출되면 안 됨!
config.properties

느낀점
이렇게 해도 되는지는 잘 모르겠지만 더 찾아봐야겠다!
갑자기 든 생각이지만 이렇게 했을 때 기존에 있던 application.properties가 적용이 되는지 내일 확인해봐야겠다.


외부 설정 파일

애플리케이션에서 사용하는 여러가지 설정 값들을 애플리케이션의 밖이나 안에 정의할 수 있는 기능을 말한다.

application.properties

이 파일은 스프링부트가 애플리케이션을 구동할 때 자동으로 로딩하는 파일이다.
key - value 형식으로 값을 정의하면 애플리케이션에서 참조하여 사용할 수 있다.

Property 우선 순위

  1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
  2. 테스트에 있는 @TestPropertySource
  3. @SpringBootTest 애노테이션의 properties 애트리뷰트
  4. 커맨드 라인 아규먼트
  5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
  6. ServletConfig 파라미터
  7. ServletContext 파라미터
  8. java:comp/env JNDI 애트리뷰트
  9. System.getProperties() 자바 시스템 프로퍼티
  10. OS 환경 변수
  11. RandomValuePropertySource
  12. JAR 밖에 있는 특정 프로파일용 application properties
  13. JAR 안에 있는 특정 프로파일용 application properties
  14. JAR 밖에 있는 application properties
  15. JAR 안에 있는 application properties
  16. @PropertySource
  17. 기본 프로퍼티 (SpringApplication.setDefaultProperties)

.properties 파일의 우선순위

application.properties를 같은 위치가 아니라 다른 위치에 둘 경우는 컴파일해도 덮어쓰지 않게 된다.

  1. file:./config/ ➡ 프로젝트 디렉토리 바로 아래에 config라는 디렉토리를 만들고 그 안에 application.properties 만들어주는 방법
  2. file:./ ➡ 프로젝트 루트 바로 아래에 application.properties 만들어주는 방법
  3. classpath:/config/ ➡ classpath 아래에 config라는 디렉토리를 만들고 그 안에 application.properties 만들어주는 방법
  4. classpath:/ ➡ classpath 아래에 application.properties 만들어주는 방법

application.properties 파일이 2개이지만 우선순위 높은 파일 하나만 적용이 되는 게 아니라 우선 순위 높은 파일 위주로 둘 다 적용이 된다.

Example
config/application.properties 파일(3. classpath:/config/)에 server.port=7777
application.properties 파일(4. classpath:/)에 server.port=9999 로 해놨다면
우선 순위가 높은 config/application.properties 파일(3. classpath:/config/)이 적용되어 7777 포트가 사용된다.

참고
Tech, Jay. “[Spring] 스프링 Properties 관리하기.” JayTech의 기술 블로그, TISTORY, 13 Nov. 2018, https://pjh3749.tistory.com/216.

https://velog.io/@max9106/Spring-Boot-%EC%99%B8%EB%B6%80%EC%84%A4%EC%A0%95-uik69crax3

https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/boot-features-external-config.html

profile
97kim.github.io
post-custom-banner

0개의 댓글