Spring의 프로파일 기능과 Spring Boot의 application.properties
5890 단어 자바spring-bootspring
Spring의 프로파일 기능
프로파일은 DI 컨테이너 내의 빈 그룹입니다. 임의의 그룹 이름을 지정할 수 있습니다.
Bean에 프로파일을 지정하려면 @Profile
어노테이션을 사용하십시오.
DevBean.java@Profile("dev")
@Component
public class DevBean {
}
ProductionBean.java@Profile("production")
@Component
public class ProductionBean {
}
@Profile
가 추가되지 않은 Bean은 특정 프로파일에 속하지 않습니다 (기본 프로파일이라고도 함). 프로파일이없는 Bean은 런타임에 어떤 프로파일을 지정하더라도 항상 활성화됩니다.
DefaultBean.java@Component
public class DefaultBean {
}
다중 프로파일 지정
@Profile
의 value
요소는 배열이므로 하나의 bean에 대해 여러 프로파일을 지정할 수 있습니다. 둘 이상을 지정하면 런타임에 프로파일 중 하나가 지정된 경우 활성화됩니다 (모든 프로파일을 런타임에 지정할 필요는 없습니다).
@Profile({"profile1", "profile2"})
@Component
public class FooBean {
}
논리 연산자 사용
!
(부정), &
(그리고), |
(또는)를 이용할 수도 있습니다.
profile1 이외에서 활성화됨@Profile("!profile1")
@Component
public class FooBean {
}
런타임에 profile1과 profile2가 모두 지정되면 활성화됨@Profile("profile1 & profile2")
@Component
public class FooBean {
}
런타임에 profile1 또는 profile2가 지정되면 활성화됨@Profile("profile1 | profile2")
@Component
public class FooBean {
}
&
와 |
가 혼재하는 경우는 반드시 괄호 ()
가 필요합니다.
❌ @Profile("profile1 | profile2 & profile3")
⭕ @Profile("profile1 | (profile2 & profile3)")
런타임 프로파일 지정
런타임에 "이번에는이 프로필을 사용할거야!"라고 지정하는 방법은 여러 가지가 있습니다. 자주 사용하는 것은 다음 세 가지입니다. 위의 것보다 우선 순위가 높아집니다.
@Profile("dev")
@Component
public class DevBean {
}
@Profile("production")
@Component
public class ProductionBean {
}
@Component
public class DefaultBean {
}
@Profile({"profile1", "profile2"})
@Component
public class FooBean {
}
@Profile("!profile1")
@Component
public class FooBean {
}
@Profile("profile1 & profile2")
@Component
public class FooBean {
}
@Profile("profile1 | profile2")
@Component
public class FooBean {
}
런타임에 "이번에는이 프로필을 사용할거야!"라고 지정하는 방법은 여러 가지가 있습니다. 자주 사용하는 것은 다음 세 가지입니다. 위의 것보다 우선 순위가 높아집니다.
@ActiveProfiles("プロファイル名")
추가@ActiveProfiles({"profile1", "profile2"})
java
명령에 -Dspring.profiles.active=プロファイル名
추가-Dspring.profiles.active=profile1,profile2
SPRING_PROFILES_ACTIVE
에 프로파일 이름 지정SPRING_PROFILES_ACTIVE=profile1,profile2
앞에서 언급했듯이 가장 중요한 점은 런타임에 어떤 프로파일을 지정하더라도 프로파일이없는 빈은 항상 사용된다는 것입니다.
Spring Boot의 application.properties
Spring Boot를 사용할 때 구성 파일 application.properties도 프로파일을 사용할 수 있습니다. application.properties는 프로파일이 없으며 application-profilename.properties는 프로파일을 지정할 때만 사용되는 설정입니다.
즉, application.properties 에 쓴 설정은, 어떤 프로파일을 지정해도 사용된다고 하는 것입니다.
프로파일을 지정한 후 application.properties 및 application-프로파일 이름 .properties에 같은 이름의 속성이 있으면 후자의 값이 우선(=덮어쓰기)됩니다.
application.propertiessample.value1=Default1
sample.value2=Default2
application-dev.properties# devプロファイル指定時はこちらの値が使われる
sample.value1=Dev1
Spring Boot를 사용할 때 런타임 프로파일 지정
Spring Boot를 사용하는 경우 앞에서 설명한 방법 외에도 명령 줄 인수로 지정할 수 있습니다.
명령행 인수로 프로파일 지정$ java -jar target/spring-boot-profiles-sample-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
IntelliJ IDEA (Ultimate Edition 전용)의 경우 실행 설정에 지정할 수 있습니다 (런타임에 -D
에서 추가됨).
샘플 코드
참고 자료
sample.value1=Default1
sample.value2=Default2
# devプロファイル指定時はこちらの値が使われる
sample.value1=Dev1
Spring Boot를 사용하는 경우 앞에서 설명한 방법 외에도 명령 줄 인수로 지정할 수 있습니다.
명령행 인수로 프로파일 지정
$ java -jar target/spring-boot-profiles-sample-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
IntelliJ IDEA (Ultimate Edition 전용)의 경우 실행 설정에 지정할 수 있습니다 (런타임에
-D
에서 추가됨).샘플 코드
참고 자료
Reference
이 문제에 관하여(Spring의 프로파일 기능과 Spring Boot의 application.properties), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suke_masa/items/98b4c1b562ea6ec89bf7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)