Development tools
Enviroments
π οΈ[κ°λ° λꡬ λ° νκ²½] Spring Bootμμ Profileμ νμ©νμ¬ κ°λ° νκ²½ λΆλ¦¬νκΈ°.
1οΈβ£ νλ‘νμΌ λΆλ¦¬ λ°©λ².
λ°©λ² 1: application.yml νμΌμμ λΆλ¦¬.
- application.yml νμΌμ μ¬λ¬ νλ‘νμΌμ νλμ νμΌλ‘ κ΄λ¦¬ν μ μλλ‘ μ§μν©λλ€.
- νκ²½λ³λ‘ μ€μ μ λλκΈ° μν΄
---
ꡬλΆμλ₯Ό μ¬μ©ν©λλ€.
μμ: application.yml
# κΈ°λ³Έ μ€μ (spring.profiles.activeλ₯Ό μ§μ νμ§ μμΌλ©΄ μ΄ μ€μ μ΄ μ¬μ©λ¨)
spring:
profiles:
default: local
datasource:
url: jdbc:h2:mem:localdb
username: local_user
password: local_pass
---
# κ°λ° νκ²½(dev) μ€μ .
spring:
profiles: dev
datasource:
url: jdbc:mysql://dev.example.com:3306/devdb
username: dev_user
password: dev_pass
---
# μ΄μ νκ²½(prod) μ€μ .
spring:
profiles: prod
datasource:
url: jdbc:mysql://prod.example.com:3306/proddb
username: prod_user
password: prod_pass
λ°©λ² 2: applicatioon-{profile}.yml νμΌλ‘ λΆλ¦¬.
- κ° νλ‘νμΌμ λ³λ νμΌλ‘ κ΄λ¦¬ν μλ μμ΅λλ€.
- νμΌ μ΄λ¦μ
{profile}
λΆλΆμ νλ‘νμΌ μ΄λ¦μΌλ‘ μ§μ ν©λλ€.
νμΌ κ΅¬μ‘°
src/main/resources/
βββ application.yml # κΈ°λ³Έ μ€μ νμΌ
βββ application-local.yml # local νλ‘νμΌ μ€μ
βββ application-dev.yml # dev νλ‘νμΌ μ€μ
βββ application-prod.yml # prod νλ‘νμΌ μ€μ
application.yml(κ³΅ν΅ μ±μ λ° νμ±ν νλ‘νμΌ μ§μ )
spring:
profile:
active: local # κΈ°λ³Έ νμ±ν νλ‘νμΌ μ€μ
application-local.yml
spring:
datasource:
url: jdbc:h2:mem:localdb
username: local_user
password: local_pass
application-dev.yml
spring:
datasource:
url: jdbc:mysql://dev.example.com:3306/devdb
username: dev_user
password: dev_pass
application-prod.yml
spring:
datasource:
url: jdbc:mysql://prod.example.com:3306/proddb
username: prod_user
password: prod_pass
2οΈβ£ μ€ν μ νλ‘νμΌ μ§μ λ°©λ².
λ°©λ² 1: λͺ
λ Ήμ΄ μ΅μ
μΌλ‘ νλ‘νμΌ μ§μ .
java -jar library-app-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
λ°©λ² 2: νκ²½ λ³μλ‘ νλ‘νμΌ μ§μ .
SPRING_PROFILES_ACTIVE=dev java -jar library-app-0.0.1-SNAPSHOT.jar
λ°©λ² 3: IDEλ₯Ό ν΅ν΄ νλ‘νμΌ μ§μ
server:
port: 8080
spring:
config:
activate:
on-profile: local
datasource:
url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER"
username: "sa"
password: ""
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.H2Dialect
h2:
console:
enabled: true
path: /h2-console
---
server:
port: 8080
spring:
config:
activate:
on-profile: dev
datasource:
url: "jdbc:mysql://localhost/library"
username: "root"
password: ""
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: none
properties:
hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.MySQL8Dialect
-
-
Run/Debug Configuration μ°½ μ΄κΈ°
-
-
Active profilesμ μ§μ ν νκ²½ μΆκ°
3οΈβ£ μ½λλ‘ νλ‘νμΌ νμΈ λ° μ μ©.
- Spring Boot μ ν리μΌμ΄μ
μ½λμμ νμ¬ νμ±νλ νλ‘νμΌμ νμΈνκ±°λ νΉμ λ‘μ§μ νκ²½μ λ°λΌ λΆκΈ°ν μλ μμ΅λλ€.
νμ± νλ‘νμΌ νμΈ.
import org.springframework.core.env.Enviroment;
import org.springframework.stereotype.Component;
@Component
public class ProfileChecker {
private final Environment environment;
public ProfileChecker(Environment environment) {
this.environment = this.environment;
}
public void printActiveProfiles() {
String[] activeProfiles = environment.getActiveProfiles();
System.out.println("Active Profiles: " + String.join(", ", activeProfiles));
}
}
νΉμ νλ‘νμΌμμλ§ λμνλ μ½λ.
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
@Service
@Profile("dev") // dev νκ²½μμλ§ νμ±ν
public class DevOnlyService {
public void run() {
System.out.println("This service runs only in the dev environment!");
}
}
4οΈβ£ μ£Όμμ¬ν.
1οΈβ£ νκ²½ λ³μ μ°μ μμ.
- Spring Bootλ νλ‘νμΌ μ€μ μμ μλ μμλ‘ μ°μ μμλ₯Ό λ°λ¦
λλ€.
- λͺ
λ Ήμ€ μΈμ
- SPRING_PROFILES_ACTIVE νκ²½ λ³μ
- appilcation.yml λλ applicatioon.propertiesμ spring.profiles.active κ°
2οΈβ£ μ΄μ νκ²½μ λν 보μ
- μ΄μ νκ²½μμλ application-prod.yml κ°μ νμΌμ λ―Όκ°ν μ 보λ₯Ό ν¬ν¨νμ§ μκ³ μΈλΆ μ€μ νμΌμ΄λ νκ²½ λ³μλ₯Ό νμ©νλ κ²μ΄ μ’μ΅λλ€.
3οΈβ£ νλ‘νμΌμ λ°λ₯Έ λΉ(Bean) μμ± κ΄λ¦¬.
- νΉμ νλ‘νμΌμμλ§ μ¬μ©ν΄μΌ νλ λΉμ
@Profile
μ λν
μ΄μ
μ μ¬μ©ν΄ κ΄λ¦¬ν©λλ€.
5οΈβ£ κ²°λ‘ .
- Spring Bootμ νλ‘νμΌμ ν΅ν΄ κ°λ° νκ²½μ λ°λ₯Έ μ€μ μ ν¨κ³Όμ μΌλ‘ λΆλ¦¬νκ³ κ΄λ¦¬ν μ μμ΅λλ€.
- application.yml λ΄μμ λΆλ¦¬νκ±°λ λ³λ νμΌλ‘ λΆλ¦¬νμ¬ μ€μ νλ©°, μ€ν μ βspring.profiles.activeλ‘ νμ±νν νλ‘νμΌμ μ§μ νλ©΄ λ©λλ€.
- μ΄μ νκ²½μμλ 보μμ κ³ λ €ν΄ λ―Όκ° μ 보λ₯Ό νκ²½ λ³μλ‘ κ΄λ¦¬νλ κ²μ΄ κΆμ₯λ©λλ€.