일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reactnative강의
- 환급챌린지
- 패캠reactnative
- 직장인자기계발
- fastcampus
- 코딩테스트
- 자바스크립트
- 코딩교육
- 직장인공부
- 30개프로젝트로배우는iOS앱개발withSwift초격차패키지Online.
- 직정인자기계발
- 패캠인강후기
- 파이썬
- 오공완
- 코딩자격증
- 패스트캠퍼스후기
- 패캠챌린지
- 수강료0원챌린지
- 직장인인강
- 패스트캠퍼스
- 패캠
- 자바
- 패캠강의후기
- Today
- Total
라티의 작은 일기장
패스트캠퍼스 환급챌린지 2일차 미션 (2월 2일) : 10개 프로젝트로 시작하는 백엔드 웹개발 : 신입 개발자 취업 집중반 강의 후기 본문
패스트캠퍼스 환급챌린지 2일차 미션 (2월 2일) : 10개 프로젝트로 시작하는 백엔드 웹개발 : 신입 개발자 취업 집중반 강의 후기
코드라티 2025. 2. 2. 11:45본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr
오늘은 스프링 기반 프로젝트에서 프로퍼티(Properties)를 관리하는 방법에 대해 학습했다.
프로퍼티는 프로젝트 내부에서 전역적으로 사용할 수 있는 어떤 key-value 쌍의 값인데, 프론트에서의 환경변수(Environment Variable)를 떠울리며 공부하니 편했다.
resources/ 하위의 application.properties 라는 파일 내부에서 관리하고, 프론트의 env와 다른점은 단순한 string 뿐 아니라 여러가지 타입으로 값을 불러올 수 있다는 점과 user.name, user.age, user.phoneNum과 같이 .으로 그룹화하여 관리할 수 있다는 점이 인상깊었다.
// .으로 비슷한 맥락에서 사용되는 환경변수들끼리 묶을 수 있다.
provider.google="google"
provider.kakao="kakao"
// 프로퍼티 값을 불러올 때에는 @Value 어노테이션을 활용한다.
@RestController
public class OAuthProviderController {
@Value("${provider.google}")
private String google; // google에는 프로퍼티로 설정한 "google"이 할당됨.
// ...
}
배열 프로퍼티값도 정의할 수 있는데, 아래와 같이 정의하고 사용할 수 있다. 사용하는 쪽에서는 List 타입으로 할당받도록 설정해야한다.
grade=a,b,c,d,e,f
// ...
@Value("${grade}")
private List<String> gradeTypes;
그리고 또 인상깊게 공부했던 부분은, 서버가 띄워지는 환경에 따라 이 properties 파일을 다르게 불러오도록 설정할 수 있다는 것이었다.
사실 이건 프론트에서의 env도 가능한 기능이긴 한데, 스프링에서도 이런식으로 불러올 수 있다는게 흥미로운 부분.
많은 서비스 회사들이 비슷하게 환경을 local, dev, staging(qa, test ...), prod 등 목적에 따라 최소 2개 이상의 서버 환경으로 분리해두었을 것인데, 이를 위한 기능이다.
| resources
|----|
| application.properties // 모든 환경에서 불러와짐
| application-dev.properties
| application-local.properties
| application-staging.properties
@ConfigurationProperties 어노테이션을 활용해서 특정 prefix로 시작하는 프로퍼티값들을 한번에 불러와서 할당하는 방법도 있는데, 특정 상황에서 매우 유용하게 사용할 수 있을 것 같다.
@ConfigurationProperties 어노테이션을 활용하려면 gradle에 아래 의존성을 추가하고 사용해야한다는 것을 주의하자.
dependencies {
// ...
implementation "org.springframework.boot:spring-boot-configuration-processor"
}
provider.google="google"
provider.kakao="kakao"
@Configuration
@ConfigurationProperties(prefix = "provider")
public class OAuthProviderConfigs {
private String google; // "google"이 할당됨
private String kakao; // "kakao"가 할당됨
}
추가로 @ConfigurationProperties를 통해 불러온 프로퍼티값을 해당 클래스의 생성자 함수에 바인딩 할 때는 @ConstructorBinding 어노테이션을 활용하면 된다.
예시)
# Payment Configuration
payment.gateway.type=stripe
payment.gateway.api-key=sk_test_123456789
payment.gateway.secret=secret_key_123
payment.registration-fee=10000
payment.currency=KRW
// ...
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.bind.ConstructorBinding;
@ConfigurationProperties(prefix = "payment")
public class PaymentProperties {
private final GatewayConfig gateway;
private final int registrationFee;
private final String currency;
@ConstructorBinding
public PaymentProperties(GatewayConfig gateway, int registrationFee, String currency) {
this.gateway = gateway;
this.registrationFee = registrationFee;
this.currency = currency;
}
// ...
학습 시작 인증
학습 종료 인증
첫 번째 클립 수강 인증
두 번째 클립 수강 인증
학습 인증