Nous savons que la fonction de configuration automatique de Spring Boot peut déterminer quelle configuration de ressort doit être utilisée et laquelle ne doit pas être utilisée en fonction des différentes situations. Par exemple:
Comment cela a-t-il été réalisé? La raison en est qu'il utilise la configuration conditionnelle de Spring, qui permet aux configurations d'exister dans l'application, mais ces configurations sont ignorées avant que certaines conditions spécifiques ne soient remplies.
Pour implémenter la configuration conditionnelle, nous devons utiliser une annotation conditionnelle @conditionnelle. Ensuite, écrivons un petit exemple pour découvrir comment fonctionne @conditionnel.
1. @Conditionnel petit exemple
Nous savons que la commande pour afficher la liste dans Windows est DIR, tandis que la commande pour afficher la liste dans le système Linux est LS. En fonction de la configuration conditionnelle, nous pouvons obtenir différentes valeurs sous différents systèmes d'exploitation.
1. Définition des conditions de jugement
1.) Conditions de décision sous Windows
/ ** * Implémentez l'interface de condition de Spring et remplacez la méthode Matchs () et renvoyez True si le système d'exploitation est Windows * * / classe publique WindowsCondition implémente la condition {@Override public boolean Matches (Contexte Contexte.GettenIviron (). }}2.) Conditions de décision sous Linux
/ ** * Implémentez l'interface de condition de Spring et remplacez la méthode Matchs () et renvoyez True si le système d'exploitation est Linux * * / classe publique LinuxCondition implémente la condition {@Override Metadata Boolean {Return Context.getenVironment (). }}2. Classes de haricots sous différents systèmes
1.) Interface
Interface publique ListService {public String showListLine ();}2.) Classe de bean sous Windows
classe publique WindowsListService implémente ListService {@Override public String showListLine () {return "dir"; }}3.) Classe de bean sous Linux
classe publique LinuxListService implémente ListService {@Override public String showListline () {return "ls"; }}3. Classe de configuration
@Configurationpublic class conditionconfig {/ ** * passez l'annotation @conditionnelle et renvoyez l'instance de WindowsListService s'il remplit les conditions Windows * * / @bean @conditional (windowscondition.class) public listService windOnwsListService () {return newwindowsService (); } / ** * Passez l'annotation @conditionnelle et renvoyez l'instance LinuxListService si elle remplit les conditions Linux * * / @Bean @conditional (LinuxCondition.class) public ListService LinuxListService () {return new LinuxListService (); }}4. Classe de test
classe publique ConditionTest {public static void main (String [] args) {annotationConfigApplicationContext context = new AnnotationConfigApplicationContext (conditionConfig.class); ListService listService = context.getBean (listService.class); System.out .println (context.getEnvironment (). GetProperty ("os.name") + "La commande List sous le système est:" + listService.shoWListline ()); }}5. Exécutez la classe de test, puisque je suis sur le système Windows 7, le résultat est
Les commandes de la liste sous Windows 7 System sont: DIR
Si le vôtre est sur Linux, le résultat sera
Les commandes de liste sous Linux System sont: ls
2. Configuration conditionnelle du démarrage de ressort
Dans le projet Spring Boot, il y aura un package en pot appelé Spring-Boot-AutoConfigure
La configuration conditionnelle est implémentée dans ce pot. Il utilise les annotations conditionnelles suivantes, qui commencent par @conditionnel:
Ensuite, regardons une colonne de code source:
Prenez JDBCTemplateAutoConfiguration à titre d'exemple, il contient ce code:
@Bean @primary @conditionalonMissingBean (jdbCoperations.class) public jdbcTemplate jdbCTemplate () {return new JDBCTemplate (this.datasource); }Un bean JDBCTemplate ne sera initialisé que lorsqu'il n'y a pas de JDBCoperations (si vous regardez le code source de JDBCTemplate, vous constaterez que la classe JDBCTemplate implémente l'interface JDBCoperations).
Sur la base du contenu ci-dessus, nous pouvons lire le code source lié à la configuration automatique.
Résumer
Ce qui précède est la configuration automatique de @conditional et de Spring Boot dans Spring Boot qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!