일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 함수형 인터페이스
- java.util.function
- OS
- 도커
- sql-mappler
- spring-data-jpa
- Spring
- ReflectUtils
- python-socketio
- custom annotation
- 문자열 리터럴
- 쓰레드 라이브러리
- 운영체제
- task_struct
- Thread Library
- FunctionalInterface
- SystemCall
- django-crontab
- @Header
- hiberbate
- rainbow table
- none이미지
- 프로세스
- AOP
- 문자열 불변성
- 롬복주의점
- Thread Multiplexing
- Process
- strict stubbing
- functional interface
- Today
- Total
JH's Develog
[SpringBoot] application.properties에 환경변수 설정하기 (@ConfigurationProperties) 본문
[SpringBoot] application.properties에 환경변수 설정하기 (@ConfigurationProperties)
jhkimmm 2022. 1. 10. 01:20application.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 같은 서비스를 이용해서 아예 다른 서버에다가 값들을 암호화시켜서 보관하는 방식도 가능합니다.
'Spring' 카테고리의 다른 글
[Spring Data JPA] MyBatis vs Hibernate vs Spring Data JPA (0) | 2022.01.23 |
---|---|
[Spring] 롬복의 단점 (주의할 점) (0) | 2022.01.13 |
[SpringBoot] @Component vs @Bean vs @Configuration (0) | 2022.01.10 |
[SpringCore] Validation (유효성 검증) (0) | 2021.12.27 |
[SpringCore] Custom Annotation과 AOP로 메서드 실행시간 측정하기 (0) | 2021.12.25 |