스프링 부트는 서버의 환경(Dev, local, test 등)에 맞춰 애플리케이션을 다르게 설정할 수 있는 프로파일(profile)기능이 있습니다.
프로파일을 통해 다음과 같이 설정이 가능합니다.
- 특정 환경에서 실행할 Bean 설정
- 특정 환경에서 사용할 프로퍼티 파일 설정
인텔리 j에선 이렇게 설정합니다.
Active profiles에다가 내가 원하는 프로파일의 이름을 적으면 됩니다.
애플리케이션이 가동되는 환경에 따라 application.properties를 별도로 구분하여 관리할 수 있습니다.
파일 이름의 형식은 'application-[profile].properties'로 지정
예시를 봅시다. 스프링 설정 환경은 다음과 같습니다.


디렉토리 구조

.yaml을 이용해서 한번에 환경을 설정하는 경우
application.properties가 아닌 yaml을 가지고 프로파일을 설정해주겠습니다.
resources에 application.yaml을 추가해주고, application.properties를 지웁니다.
spring:
profile-name: "default"
---
spring:
config:
activate:
on-profile: local
profile-name : "local"
---
spring:
config:
activate:
on-profile: dev
profile-name : "dev"
yaml은 '---'를 써서 환경을 구분할 수 있습니다.
만약 환경을 한 파일에 두는게 아닌, 각자 다른 yaml파일에 넣어 구분하고 싶다면
application-[profile].yaml' 형식으로 지어야 합니다.
ex) application-dev.yaml, application-local.yaml
controller 패키지에 myController를 만들어줍니다.
@RestController
public class MyController {
@Value("${spring.profile-name}")
private String name;
@GetMapping("/showprofile")
public String showprofile(){
System.out.println(name+"환경에서 실행중입니다.");
return name;
}
}
MyController에서 @Value 어노테이션에 의해 제가 설정해준 yaml에서 profile-name 변수를 가져옵니다.
만약에 profile 설정을 아무것도 하지 않았다면 default 값을 가져옵니다.
한번 실행해 보겠습니다.
Default(아무 프로파일도 설정해주지 않았을 때)
서버로그 2번째 줄에 default profile "default"라고 적혀있는 것이 보입니다.
default 환경에서 실행 중임을 알 수 있습니다.
DEV(Intelij에서 profile을 설정)
dev로 profile을 바꿔주니 설정이 바뀌었습니다.
JAR에서 JVM옵션으로 주기
gradle에서 Tasks > build > bootJar를 더블클릭하시면 JAR가 생성됩니다.
이후 jar가 있는 파일에 이동 후
java -jar -Dspring.profiles.active=[프로파일] exampleforprofile-0.0.1-SNAPSHOT.jar
명령하면 프로파일을 설정해서 실행할 수 있습니다.
'자바' 카테고리의 다른 글
제네릭(generic) (0) | 2022.08.26 |
---|---|
스프링은 어떻게 property를 관리할까 (0) | 2022.08.19 |
다형성(polymorphism) (0) | 2022.06.24 |
접근제어자(Access Modifier)정리 (0) | 2022.06.23 |
싱글톤(Singleton) (0) | 2022.06.23 |