메모장
환경에 맞는 Spring Profile 설정하기 본문
환경에 맞는 Spring Profile 설정하기
스프링 부트로 서버를 개발하다보면 개발환경과 운영 환경에서의 profile을 다르게 설정해야하는 경우가 생깁니다. ( 데이터베이스 설정, 외부 연동 url등)
이러한 경우에 스프링에서 지원하는 Spring Profile을 통해 환경에 따라 다른 profile을 설정해줄 수 있습니다.
Profile 작성하기
먼저 스프링 프로필을 작성해야합니다.
/src/main/resources/develop/application.properties
spring.profile.value: develop
/src/main/resources/production/application.properties
spring.profile.value: production
이제 스프링에서 @Profile 어노테이션을 사용해 프로필을 추가해줘야합니다.
/src/main/java/com/kingcjy/main/config/profile/ProfileDevelop.java
@Configuration
@Profile(value="develop")
@PropertySource({"classpath:develop/application.properties"})
public class ProfileDevelop {
}
/src/main/java/com/kingcjy/main/config/profile/ProfileProduction.java
@Configuration
@Profile(value="production")
@PropertySource({"classpath:production/application.properties"})
public class ProfileDevelop {
}
위의 두개의 프로필 클래스를 import 해줘야합니다.
/src/main/java/com/kingcjy/main/config/profile/ProfileConfig.java
@Import({ ProfileDevelop.class, ProfileProduction.class})
@Configuration
public class ProfileConfig {
}
기본 프로필 설정하기
이제 스프링 부트의 기본 프로필을 설정하기 위해 시작 클래스를 수정합니다.
/src/main/java/com/kingcjy/main/SpringBootApplication.java
@org.springframework.boot.autoconfigure.SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
String profile = System.getProperty("spring.profiles.active");
if(profile == null) {
System.setProperty("spring.profiles.active", "develop");
}
SpringApplication.run(SpringBootApplication.class, args);
}
}
프로필에대한 정보가 없을 시 develop 프로필을 지정합니다.
** 인텔리제이를 사용하신다면 Edit Configuration -> Spring Boot -> Active profiles에서 develop으로 지정해도 사용 가능합니다.
프로필 결과 확인
정상적으로 적용되었는지 확인하기 위해 간단한 컨트롤러를 작성해줍니다.
/src/main/java/com/kingcjy/main/controller/MyController
@Controller
public class MyController {
@Value("${spring.profile.value}")
private String profile;
@GetMapping("/ping")
public ResponseEntity<String> ping() {
return new ResponseEntity<>(profile, HttpStatus.OK);
}
}
이제 스프링 부트를 실행한 다음 http://127.0.0.1:8080/ping
으로 접속하면 develop 프로필이 지정됩니다.
develop
production 프로필을 지정하기 위해서는 스프링 부트를 실행할 때 spring.profiles.active=production 파라미터를 넣어주시면 아래와 같이 production 프로파일이 지정됩니다.
production
테스트 환경에서의 프로필 설정
테스트 환경에서는 테스트 클래스에 @ActiveProfiles(value = { "develop" })
어노테이션을 작성해주시면 원하시는 프로필이 적용된 상태에서 테스트가 진행됩니다.
마무리
사용된 모든 코드는 GITHUB 에 있습니다.
'개발 > Spring' 카테고리의 다른 글
Spring HandlerMethodArgumentResolver의 사용법과 동작원리 (0) | 2022.01.11 |
---|---|
Spring Boot, JPA DB Replication 설정하기 (0) | 2019.04.21 |
Spring REST Docs 를 사용한 API 문서 자동화 (0) | 2019.03.13 |