Properties가 뭔가요? 🤔
Properties는 애플리케이션의 설정 값들을 외부 파일로 분리하여 관리하는 방식입니다.
예를 들어볼까요?
- 개발 환경:
db.url=localhost:3306
- 운영 환경:
db.url=prod.company.com:3306
이렇게 환경별로 다른 설정값들을 손쉽게 관리할 수 있답니다!
Properties 설정 방법 💡
1. application.properties 생성
# src/main/resources/application.properties
db.url=localhost:3306
db.username=dev
db.password=1234
2. @PropertySource 설정
@Configuration
@PropertySource("classpath:/application.properties")
public class AppConfig {
// 설정 코드
}
3. 값 사용하기
@Service
public class UserService {
private final String dbUrl;
public UserService(@Value("${db.url}") String dbUrl) {
this.dbUrl = dbUrl;
}
}
Profiles은 뭔가요? 🌈
Profiles은 환경별로 다른 설정과 빈을 활성화할 수 있게 해주는 기능입니다.
예시 상황:
- 개발 환경: 더미 데이터 필요
- 테스트 환경: 테스트용 설정 필요
- 운영 환경: 실제 운영 설정 필요
Profiles 사용법 🛠
1. Profile별 설정 파일
# application-dev.properties
server.port=8080
logging.level.root=DEBUG
# application-prod.properties
server.port=80
logging.level.root=INFO
2. Profile별 빈 설정
@Component
@Profile("dev")
public class DevDataInitializer {
@PostConstruct
public void init() {
// 개발환경 초기 데이터 설정
}
}
3. Profile 활성화
# VM 옵션으로 설정
-Dspring.profiles.active=dev
# 또는 application.properties에 설정
spring.profiles.active=dev
Properties & Profiles 함께 사용하기 🎨
1. 공통 설정 (application.properties)
app.name=MyApp
app.version=1.0
2. Profile별 설정 (application-{profile}.properties)
# application-dev.properties
db.url=dev-db:3306
# application-prod.properties
db.url=prod-db:3306
3. 설정 우선순위
- application-{profile}.properties
- application.properties
- 기본값
실전 예제 📱
@Service
public class EmailService {
private final String smtpHost;
private final String smtpPort;
public EmailService(
@Value("${email.smtp.host}") String smtpHost,
@Value("${email.smtp.port}") String smtpPort
) {
this.smtpHost = smtpHost;
this.smtpPort = smtpPort;
}
public void sendEmail() {
System.out.println("Sending email using " + smtpHost + ":" + smtpPort);
}
}
주의사항 ⚠️
Properties 파일 위치
- classpath 루트 (src/main/resources/)에 위치해야 함
- 파일명은 application.properties 권장
Profile 활성화 순서
- 애플리케이션 시작 전에 설정해야 함
- 런타임에 변경 어려움
민감정보 관리
- 비밀번호 등은 환경변수나 외부 설정으로 관리
- Properties 파일에 직접 입력은 피하기
활용 팁 💡
여러 Profile 동시 활성화
spring.profiles.active=dev,logging,oauth
기본 Profile 설정
spring.profiles.default=dev
조건부 빈 등록
@Configuration @Profile("dev") public class DevConfig { // 개발 환경 전용 빈 설정 }
마치며 🎁
Properties와 Profiles을 잘 활용하면 환경별 설정 관리가 한결 수월해집니다. 특히 MSA 환경에서는 필수적인 기능이니 꼭 마스터하세요!
References:
- Spring Framework Documentation: https://docs.spring.io/spring-framework/reference/core/beans/environment.html
- Spring Boot Properties Documentation: https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
- Baeldung Spring Profiles Guide: https://www.baeldung.com/spring-profiles
728x90
'300===Dev Framework > Spring' 카테고리의 다른 글
Spring Data JDBC: JPA보다 가벼운 ORM의 대안 🚀 (1) | 2024.11.14 |
---|---|
Spring @Transactional 완벽 가이드 🎯 (0) | 2024.11.14 |
Spring Bean의 생명주기 콜백 메서드 (@PostConstruct & @PreDestroy) 🌱 (2) | 2024.11.14 |
Spring 스케줄링 ⏰ (1) | 2024.11.07 |
Spring IoC Container Introduced (0) | 2024.06.02 |