JH's Develog

[SpringBoot] application.properties에 환경변수 설정하기 (@ConfigurationProperties) 본문

Spring

[SpringBoot] application.properties에 환경변수 설정하기 (@ConfigurationProperties)

jhkimmm 2022. 1. 10. 01:20

application.properties 파일에 환경변수를 설정하고 코드에서 값을 가져오는 방법을 알아보겠습니다.

의존성은 다음과 같습니다.

dependencies {
	...
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
}

먼저 application.properties에 설정 값들을 추가합니다.

@ConfigurationProperties 어노테이션이 핵심입니다. application.properties 파일에서 키 값이 "my"인 설정값을 추가했기 때문에 @ConfigurationProperties에도 키 값을 "my"로 설정해주고, @ConstructorBinding과 롬복의 @RequiredArgsConstructor를 활용해서 생성자 주입방식으로 설정 값을 MyConfig 클래스에 주입 해줍니다.

main이 있는 클래스에서 @ConfigurationPropertiesScan 어노테이션으로 ConfigurationProperties들을 스캔해서 빈으로 등록될 수 있도록 하고, 위와 같이 final필드와 @RequiredArgsConstructor를 활용해서 생성자 주입방식으로 MyConfig클래스를 사용하거나 간단하게 @Autowired로 주입받아서 설정값을 받아오면 됩니다.

실행결과

+추가

만약 DB의 username, password나 api의 키 값과 같은 설정 값을 따로 분리해서 .gitignore에 추가하고 싶다면

"application-(원하는이름).properties" 파일을 만들어서 기존과 같이 환경변수를 저장하고 기존 application.properties파일에 "spring.profile.include=(원하는이름)"을 통해서 include 해준 후에 .gitignore에 분리한 파일명을 추가하면 됩니다.

이걸로도 만족하지 못하고 더 안전하게 보관하고 싶다면? 스프링 부트에서도 지원하는 hashicorp사의 Vault 같은 서비스를 이용해서 아예 다른 서버에다가 값들을 암호화시켜서 보관하는 방식도 가능합니다.

Comments