application.properties ํ์ผ
์ฐ๋ฆฌ๋ application.yml ์ด๋ application.properties ํ์ผ์ ์ด์ฉํด์ ์ค์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ณค ํ๋ค.
server:
port: 56237
spring:
application:
name: user-service
datasource:
url: 232.221.123.33
driver: h2.Driver
username: ffowidl123
password: "{cipher}ff01fjosdifj02034j5;jasdj5rq239y48f"
์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๋ application์ ๋ค์ํ ํ๊ฒฝ์์ ๊ฐ๋ฐ๋์ด์ง๋ค.
์ด๋ฅผํ
๋ฉด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํ dev ํ๊ฒฝ, ๊ธฐ๋ฅ ํ
์คํธ๋ฅผ ์ํ test ํ๊ฒฝ, ๊ธฐ๋ฅ ๋ฐฐํฌ๋ฅผ ์ํ production ํ๊ฒฝ ๋ฑ๋ฑ
๊ฐ๊ฐ์ ๋ง๋ ํ๊ฒฝ๊ณผ ๊ฐ๊ฐ์ ๋ง๋ ์ค์ ์ ์ง์ ํด์ค์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ๊ฐ๊ฐ์ ํ๊ฒฝ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
- dev : h2
- test : MySQL
- prod : PostgresQL
๊ทธ๋ด ๋ ์ฐ๋ฆฌ๋ ๊ฐ๊ฐ ํ๊ฒฝ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ๋ฐ๊ฟ์ค์ผ ํ ๊น?
๋ฐ๋ก profile ์ ๋ณด๋ฅผ ์์ ํ์ฌ ๊ฐ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์ ๋ณด๋ฅผ ๋ฃ์ด์ค ์ ์๋ค.
profile
Spring Boot ์ profile์ด๋ ๊ฐ๊ฐ์ ํ๊ฒฝ ์ ๋ณด๋ค์ ์๋ฏธํ๋ค.
๊ธฐ๋ณธ์ ์ธ profile ์ ๋ณด๋
application.properties
application.yml
์ธ๋ฐ, ์ฌ๊ธฐ์ ํน์ ๊ท์น์ ๋ง์กฑํ๊ฒ ์ค์ ํ์ผ์ ๋ง๋ค๋ฉด Spring boot๊ฐ ์ฝ์ด์ฌ ์ ์๊ฒ ๋๋ค.
application.{ํ๋กํ ๋ค์ ํค์๋}.properties
- ex)
application-test.properties
- ex)
application.{ํ๋กํ ๋ค์ ํค์๋}.yml
- ex)
application-prod.properties
- ex)
์ค์ตํ๊ธฐ
๊ฐ๊ฐ์ ํ๊ฒฝ์ ๋ฐ๋ฅธ ์ค์ ํ์ผ๋ค์ ๋ง๋ค์ด์ ๋ณด์.
๊ฐ๊ฐ ํ๋กํ์ผ ํ์ผ ๋ง๋ค๊ธฐ
์์ ๊ฐ์ด application.yml ๊ณผ ๊ฐ์ depth ๋ก ์ฌ๋ฌ ์ค์ ํ์ผ๋ค์ ๋ถ๋ฌ์จ๋ค.
์คํํ๊ธฐ
์ค์ ์ ๋ณด๋ฅผ ๋ฐ๊ฟ์ ์คํํ๊ธฐ ์ํด์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
ํ์ง๋ง ํฌ๊ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ด์ผ๊ธฐํด๋ณด๋ ค ํ๋ค.
- application.yml ์ profile.active ์ง์ ํ๊ธฐ
- java -jar ์ ์ต์ ์ ์ค์ ํน์ profile ๋ก๋ํ๊ธฐ
1. application.yml ์ profile.active ์ง์ ํ๊ธฐ
yml์ด๋ properties ํ์ผ์์ ์ง์ ์ค์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์์๋๋ฐ, profile.active ์ ์ง์ ํ๋ฉด ๋๋ค.
spring:
profiles:
active: test
spring:
profiles:
active: test
๋ง์ฝ ์๋ฌด๊ฒ๋ ์ง์ ํ์ง ์๋๋ค๋ฉด application.yml ์ด๋ application.properties ํ์ผ์ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
2. java -jar ์ ์ต์ ์ ์ค์ ํน์ profile ๋ก๋ํ๊ธฐ
java jar ํ์ผ๋ก ๋น๋๋ฅผ ํ๊ณ jar ํ์ผ์ ์คํ์ํค๋ ์์ ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ถ๊ฐํ์ฌ profile ์ ๋ณ๊ฒฝ์ํฌ ์ ์๋ค.
java -jar -Dspring.profiles.active=dev ./my-app-0.0.1-SNAPSHOT.jar
java -jar -Dspring.profiles.active=test ./my-app-0.0.1-SNAPSHOT.jar
java -jar -Dspring.profiles.active=prod ./my-app-0.0.1-SNAPSHOT.jar
ํ ์คํธ
application.yml
server:
port: 8080
spring:
application:
name: user-service
profiles:
active: test # ๋ง์ฝ application-prod.yml ํ์ผ์ ๋ก๋ฉํ๊ณ ์ถ๋ค๋ฉด, prod
greeting:
message: this is main application.yml
application-test.yml
greeting:
message: this is TEST application.yml
application-prod.yml
greeting:
message: this is PRODUCTION application.yml
UserServiceApplication.java
@SpringBootApplication
@RestController
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
@GetMapping
public String string(@Value("${greeting.message}") String message) {
return message;
}
}
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ ํ๊ฒฝ์์ ์ํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๋๊ธ