반응형
application.yml, application.properties 이란?
- 스프링 부트가 자동으로 로딩하게 되는 설정 파일.
- key - value 형식으로 구성
- 설정하는 방법은 여러 가지라 우선순위에 따라 오버라이딩될 수 있음.
설정 파일 값 참조
application.properties
ping.message=pong
1. Environment
@SpringBootApplication
@RestController
public class TestPrjApplication {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(TestPrjApplication.class, args);
}
@GetMapping("/ping")
public String ping() {
return environment.getProperty("ping.message");
}
}
2. @Value
@SpringBootApplication
@RestController
public class TestPrjApplication {
@Value("${ping.message}")
private String check;
public static void main(String[] args) {
SpringApplication.run(TestPrjApplication.class, args);
}
@GetMapping("/ping")
public String ping() {
return check;
}
}
Profile active
Spring Boot에서 profile은 각각의 환경 정보를 의미함.
개발 환경, 테스트 환경, 운영 환경 등 각각의 환경에 맞는 설정을 할 때 사용.
resource 하위 각각의 환경에 맞게 파일 생성
profile 설정 없이 실행하면 default로 사용
# application-default.properties
spring.config.activate.on-profile=default
#spring.profiles.active=default
#active.message=default active
ping.message=default pong
spring.config.use-legacy-processing=true
# application-dev.properties
spring.config.activate.on-profile=dev
#spring.profiles.active=dev
#active.message=dev active
ping.message=dev pong
spring.config.use-legacy-processing=true
# application-prod.properties
spring.config.activate.on-profile=prod
#spring.profiles.active=prod
#active.message=prod active
ping.message=prod pong
spring.config.use-legacy-processing=true
실행
1. IDE 실행 (Intellij 실행)
Edit Configuration... > Environment > VM options
-Dspring.profiles.active=prod
# java -jar Dspring.profiles.active=prod prj.jar
2. Dockerfile 환경 변수 설정
environment:
- 'spring_profiles_active=prod'
확인
[main] com.example.testprj.TestPrjApplication : The following 1 profile is active: "prod"
http://localhost:8080/ping
# prod pong
http://localhost:8080/active
# prod active
@SpringBootApplication
@RestController
public class TestPrjApplication {
@Autowired
private Environment environment;
@Value("${ping.message}")
private String check;
public static void main(String[] args) {
SpringApplication.run(TestPrjApplication.class, args);
}
@GetMapping("/active")
public String active() {
return environment.getProperty("active.message");
}
@GetMapping("/ping")
public String ping() {
return check;
}
}
에러
19:10:45.380 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property 'spring.profiles.active' imported from location 'class path resource [application-prod.properties]' is invalid in a profile specific resource [origin: class path resource [application-prod.properties] - 2:24]
at org.springframework.boot.context.config.InvalidConfigDataPropertyException.lambda$throwOrWarn$1(InvalidConfigDataPropertyException.java:125)
해결 방법
1. 레거시 구동방식 유지
spring.config.use-legacy-processing=true
2. spring.profile 변경
spring.config.activate.on-profile=prod
#spring.profiles.active=prod
참고
반응형
'JAVA' 카테고리의 다른 글
카카오 지도 API 사용 방법 (자바스크립트) (0) | 2020.03.08 |
---|---|
Selection does not contain a main type Error (0) | 2020.02.07 |
Java & eclipse(이클립스) 설치방법 (0) | 2019.10.07 |