Wir wissen, dass die automatische Konfigurationsfunktion des Spring -Starts bestimmen kann, welche Federkonfiguration verwendet werden sollte und welche nicht in verschiedenen Situationen verwendet werden sollte. Zum Beispiel:
Wie wurde das erreicht? Der Grund dafür ist, dass die bedingte Konfiguration von Spring verwendet wird, mit der Konfigurationen in der Anwendung vorhanden sind. Diese Konfigurationen werden jedoch ignoriert, bevor bestimmte Bedingungen erfüllt sind.
Um eine bedingte Konfiguration zu implementieren, müssen wir @Conditional Conditional Annotation verwenden. Schreiben wir als nächstes ein kleines Beispiel, um zu erfahren, wie @Conditional funktioniert.
1. @Conditional Small Beispiel
Wir wissen, dass der Befehl zur Anzeige der Liste in Windows ist DIR, während der Befehl zur Anzeige der Liste im Linux -System LS ist. Basierend auf der bedingten Konfiguration können wir unter verschiedenen Betriebssystemen unterschiedliche Werte erreichen.
1. Definition der Urteilsbedingungen
1.) Entscheidungsbedingungen unter Windows
/** * Implementieren Sie die Bedingungsschnittstelle von Spring und überschreiben Sie die Methode () -Methode () und geben Sie true zurück, wenn das Betriebssystem Windows * * */Public Class WindowsCondition implementiert. }}
2.) Entscheidungsbedingungen unter Linux
/** * Implementieren Sie die Bedingungsschnittstelle von Spring und überschreiben Sie die Methode () -Methode () und geben Sie true, wenn das Betriebssystem Linux * * */Public Class LinuxCondition implementiert. }}
2. Sitzklassen unter verschiedenen Systemen
1.) Schnittstelle
öffentliche Schnittstelle ListService {public String showlistline ();}2.) Bean -Klasse unter Windows
öffentliche Klasse WindowsListService Implements ListService {@Override public String showlistline () {return "Dir"; }}3.) Bean -Klasse unter Linux
public class linuxlistservice implements listService {@Override public String showlistline () {return "ls"; }}3. Konfigurationsklasse
@ConfigurationPublic Class ConditionConfig { / *** Übergeben Sie die @Conditional Annotation und geben Sie die WindowsListservice -Instanz zurück, wenn sie die Fensterbedingungen erfüllt } / *** Übergeben Sie die @Conditional Annotation und geben Sie die LinuxListservice -Instanz zurück, wenn sie die Linux -Bedingungen erfüllt }}4. Testunterricht
public class 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") + "Der Befehl List unter dem System lautet:" + listService.showlistline ()); }}5. Führen Sie die Testklasse aus, da ich unter Windows 7 -System bin, ist das Ergebnis
Die Listenbefehle unter Windows 7 -System sind: Dir
Wenn Ihre unter Linux ist, wird das Ergebnis sein
Die Listenbefehle unter Linux -System sind: ls
2. Bedingte Konfiguration des Federschuhs
Im Spring Boot-Projekt wird ein JAR-Paket namens Spring-Boot-Autoconfigure geben
Die bedingte Konfiguration wird in diesem Glas implementiert. Es verwendet die folgenden bedingten Anmerkungen, die mit @Conditional beginnen:
Schauen wir uns als nächstes eine Quellcodespalte an:
Nehmen Sie JDBCTEmPlateAutoConfiguration als Beispiel, er enthält diesen Code:
@Bean @primary @Conditionalonmissingbean (jdbCoperations.class) public Jdbctemplate jdbctemplate () {return New JDBCTEMPLET (this.dataSource); }Eine jdbctemplate -Bean wird nur dann initialisiert, wenn es keine JDBCoperationen gibt (wenn Sie sich den Quellcode von JDBCTEMplate ansehen, werden Sie feststellen, dass die JDBCTEMPLE -Klasse die Schnittstelle von JDBCOPERATIONS implementiert).
Basierend auf dem obigen Inhalt können wir den Quellcode im Zusammenhang mit der automatischen Konfiguration lesen.
Zusammenfassen
Das obige ist die automatische Konfiguration von @Conditional und Spring Boot in Spring Boot, die Ihnen vom Editor vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!