Konfigurationsklasse (diese Klasse unter @Configuration) ist entspricht tatsächlich einer Fabrik. Die mit der Annotation @Bean gekennzeichnete Methode entspricht der Fabrikmethode
Betrachten Sie das folgende Beispiel:
@Configuration // 注意点1: 配置类其实相当于一个工厂, 标注 @Bean 注解的方法相当于工厂方法 static class MyConfig { @Bean public Bean1 bean1() { System.out.println("bean1()"); return new Bean1(); }
@Configuration @MapperScan("aaa") // 注意点1: 配置类其实相当于一个工厂, 标注 @Bean 注解的方法相当于工厂方法 static class MyConfig { // 注意点2: @Bean 不支持方法重载, 如果有多个重载方法, 仅有一个能入选为工厂方法 @Bean public Bean1 bean1() { System.out.println("bean1()"); return new Bean1(); } @Bean public Bean1 bean1(@Value("${java.class.version}") String a) { System.out.println("bean1(" + a + ")"); return new Bean1(); } @Bean public Bean1 bean1(@Value("${java.class.version}") String a, @Value("${JAVA_HOME}") String b) { System.out.println("bean1(" + a + ", " + b + ")"); return new Bean1(); }
Hinweis 3
#🎜🎜 #excludeFilters – wird zum Ausschließen während des Scannens von Komponenten verwendet und schließt auch automatische Konfigurationsklassen aus. Wird verwendet, um sich das Startpaket des Scanvorgangs zu merken, d. spring.factories (die automatische Konfigurationsklasse bedeutet, dass die automatische Konfigurationsklasse verwendet wird, wenn die Hauptkonfigurationsklasse nicht konfiguriert ist)# 🎜🎜#
Warum nicht @Import verwenden, um die automatische Konfigurationsklasse direkt einzuführen#🎜🎜 #Lassen Sie die Hauptkonfigurationsklasse stark mit der automatischen Konfigurationsklasse gekoppelt sein. Die Hauptkonfigurationsklasse sollte nicht wissen, welche Slave-Konfigurationen gibt es wird als Standardkonfiguration verwendet, wenn die Hauptkonfigurationsklasse nicht bereitgestellt wird)
wird von AutoConfigurationImportSelector.class
gelesen read META-INF/spring.factories
Die automatische Konfigurationsklasse in realisiert eine schwache Kopplung.
Darüber hinaus implementiert AutoConfigurationImportSelector.class
die DeferredImportSelector-Schnittstelle, sodass die automatische Konfiguration später als die Hauptkonfiguration analysiert werden kann ##🎜🎜 #
Das obige ist der detaillierte Inhalt vonAutomatische Springboot-Konfiguration und @Configuration-Konfigurationsklasseninstanzanalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!