Un profil est un groupe de beans dans un conteneur DI. Vous pouvez spécifier n'importe quel nom de groupe.
Pour spécifier un profil pour un bean, utilisez l'annotation @ Profile
.
DevBean.java
@Profile("dev")
@Component
public class DevBean {
}
ProductionBean.java
@Profile("production")
@Component
public class ProductionBean {
}
Les beans sans «@ Profile» n'appartiennent pas à un profil particulier (également appelé profil par défaut). ** Les beans sans profil sont toujours activés au moment de l'exécution, quel que soit le profil que vous spécifiez. ** **
DefaultBean.java
@Component
public class DefaultBean {
}
Puisque l'élément value
de @ Profile
est un tableau, vous pouvez spécifier plusieurs profils pour un bean. Si vous en spécifiez plusieurs, il sera activé si un profil est spécifié au moment de l'exécution (tous les profils n'ont pas besoin d'être spécifiés au moment de l'exécution).
@Profile({"profile1", "profile2"})
@Component
public class FooBean {
}
Vous pouvez également utiliser !
(Négatif), &
(et) et |
(ou).
Activé pour tout autre chose que profile1
@Profile("!profile1")
@Component
public class FooBean {
}
Activé lorsque profile1 et profile2 sont spécifiés au moment de l'exécution
@Profile("profile1 & profile2")
@Component
public class FooBean {
}
Activé si profile1 ou profile2 est spécifié au moment de l'exécution
@Profile("profile1 | profile2")
@Component
public class FooBean {
}
Si vous avez un mélange de «&» et «|», vous devez toujours utiliser les parenthèses «()». ❌
@Profile("profile1 | profile2 & profile3")
⭕@Profile("profile1 | (profile2 & profile3)")
Il existe différentes manières de spécifier «J'utiliserai ce profil cette fois!» Au moment de l'exécution. Les trois suivants sont souvent utilisés. Plus la priorité est élevée, plus la priorité est élevée.
@ActiveProfiles (" nom de profil ")
à la classe de test JUnit
--Lorsque plusieurs spécifications sont spécifiées, spécifiez un tableau @ActiveProfiles ({" profile1 "," profile2 "})
-Dspring.profiles.active = nom du profil
à la commande java
--Séparer par des virgules lorsque plusieurs sont spécifiés -Dspring.profiles.active = profile1, profile2
SPRING_PROFILES_ACTIVE
--Séparer par des virgules lorsque plusieurs sont spécifiés SPRING_PROFILES_ACTIVE = profile1, profile2
Comme mentionné ci-dessus, la première mise en garde est que ** quel que soit le profil que vous spécifiez au moment de l'exécution, les beans sans profil seront toujours utilisés. ** **
Lors de l'utilisation de Spring Boot, le profil peut également être utilisé dans le fichier de paramètres application.properties. application.properties n'a pas de profil et nom du profil d'application.properties est un paramètre qui n'est utilisé que lorsque ce profil est spécifié.
Cela signifie que les paramètres que vous écrivez dans ** application.properties seront utilisés quel que soit le profil que vous spécifiez. ** **
Si vous spécifiez un profil et que des propriétés portent le même nom dans application.properties et nom du profil d'application.properties, cette dernière valeur aura la priorité (= écraser) **.
application.properties
sample.value1=Default1
sample.value2=Default2
application-dev.properties
#Cette valeur est utilisée lors de la spécification du profil de développement
sample.value1=Dev1
Si vous utilisez Spring Boot, vous pouvez le spécifier avec un argument de ligne de commande en plus de la méthode de spécification ci-dessus.
Spécification de profil avec des arguments de ligne de commande
$ java -jar target/spring-boot-profiles-sample-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
Pour IntelliJ IDEA (Ultimate Edition uniquement), il peut être spécifié dans les paramètres d'exécution (ajouté avec -D
au moment de l'exécution).
https://github.com/MasatoshiTada/spring-profile-sample
Recommended Posts