Ein Profil ist eine Gruppe von Bohnen in einem DI-Container. Sie können einen beliebigen Gruppennamen angeben.
Verwenden Sie die Annotation "@ Profile", um ein Profil für eine Bean anzugeben.
DevBean.java
@Profile("dev")
@Component
public class DevBean {
}
ProductionBean.java
@Profile("production")
@Component
public class ProductionBean {
}
Beans ohne "@ Profile" gehören nicht zu einem bestimmten Profil (auch als Standardprofil bezeichnet). ** Beans ohne Profile sind zur Laufzeit immer aktiviert, unabhängig davon, welches Profil Sie angeben. ** ** **
DefaultBean.java
@Component
public class DefaultBean {
}
Da das value
-Element von @ Profile
ein Array ist, können Sie mehrere Profile für eine Bean angeben. Wenn Sie mehr als ein Profil angeben, wird es aktiviert, wenn zur Laufzeit ein Profil angegeben wird (nicht alle Profile müssen zur Laufzeit angegeben werden).
@Profile({"profile1", "profile2"})
@Component
public class FooBean {
}
Sie können auch !
(Negativ), &
(und) und |
(oder) verwenden.
Aktiviert für alles andere als profile1
@Profile("!profile1")
@Component
public class FooBean {
}
Aktiviert, wenn zur Laufzeit sowohl Profil1 als auch Profil2 angegeben werden
@Profile("profile1 & profile2")
@Component
public class FooBean {
}
Aktiviert, wenn zur Laufzeit Profil1 oder Profil2 angegeben ist
@Profile("profile1 | profile2")
@Component
public class FooBean {
}
Wenn Sie eine Mischung aus "&" und "|" haben, müssen Sie immer die Klammern "()" verwenden. ❌
@Profile("profile1 | profile2 & profile3")
⭕@Profile("profile1 | (profile2 & profile3)")
Es gibt verschiedene Möglichkeiten, um "Ich werde dieses Profil dieses Mal verwenden!" Zur Laufzeit anzugeben. Die folgenden drei werden häufig verwendet. Je höher die Priorität, desto höher die Priorität.
Wie oben erwähnt, ist die erste Einschränkung, dass ** unabhängig davon, welches Profil Sie zur Laufzeit angeben, Beans ohne Profile immer verwendet werden. ** ** **
Bei Verwendung von Spring Boot kann das Profil auch in der Einstellungsdatei application.properties verwendet werden. application.properties hat kein Profil, und application-profile name.properties ist eine Einstellung, die nur verwendet wird, wenn dieses Profil angegeben wird.
Dies bedeutet, dass die Einstellungen, die Sie in ** application.properties schreiben, unabhängig von dem von Ihnen angegebenen Profil verwendet werden. ** ** **
Wenn Sie ein Profil angeben und in application.properties und application-profile name.properties Eigenschaften mit demselben Namen vorhanden sind, erhält der letztere Wert die Priorität (= überschreiben) **.
application.properties
sample.value1=Default1
sample.value2=Default2
application-dev.properties
#Dieser Wert wird bei der Angabe des Entwicklungsprofils verwendet
sample.value1=Dev1
Wenn Sie Spring Boot verwenden, können Sie es zusätzlich zu der obigen Spezifikationsmethode mit einem Befehlszeilenargument angeben.
Profilspezifikation mit Befehlszeilenargumenten
$ java -jar target/spring-boot-profiles-sample-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
Für IntelliJ IDEA (nur Ultimate Edition) kann es in den Ausführungseinstellungen angegeben werden (zur Laufzeit mit -D hinzugefügt).
https://github.com/MasatoshiTada/spring-profile-sample
Recommended Posts