目次
3.2 AutoConfigurationImportSelector
3.3 @AutoConfiguration アノテーション
ビデオリンク:
Power Node SpringBoot チュートリアル ~分かりやすく高収入には必須の spring boot3 【エントリーからプロジェクト実戦まで SpringBoot3】
第 3 章 自動構成
autoconfigure (自動構成) を有効にすると、フレームワークは Bean で使用される Bean の推測を試み、クラスパスから xxx.jar を見つけ、この jar 内に必要な Bean をいくつか作成します。たとえば、MyBatis を使用してデータにアクセスし、プロジェクトのクラスパスから mybatis.jar を探し、さらに SqlSessionFactory を作成します。また、データに接続するには DataSource データ ソース オブジェクトも必要です。これらのジョブは、自動構成クラスである XXXAutoConfiguration クラスに渡されます。多くの XXXAutoConfiguration クラスは spring-boot-autoconfigure-3.0.2.jar で定義されています。サードパーティ フレームワークのスターターには、独自の XXXAutoConfiguration が含まれています
サードパーティ フレームワーク MyBatis、MyBatisAutoConfiguration の mybatis-spring-boot-starter の自動構成クラス
自動構成アノテーション @EnableAutoConfiguration (通常は @SpringBootApplication アノテーションによってもたらされる) が特別な意味を持つパッケージです。これは Spring Boot のデフォルト パッケージであり、デフォルト パッケージはスキャン パッケージの開始点 (ルート パッケージ) です。 。@Controller 、 @Service 、 @Repository 、 @Component 、 @Configuration は、ルート パッケージおよびサブパッケージに配置されるときにスキャンされます。
3.1 @インポート
@EnableAutoConfiguration ソース コードの上の @Import(AutoConfigurationImportSelector.class)
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
....
}
@Import: Beanとして登録されたインポートクラス。@Import は、xml ファイルの <import> に相当します。@Configuration クラス、ImportSelector インターフェースを実装するクラス、および ImportBeanDefinitionRegistrar インターフェースを実装するクラスをインポートできます。
ImportSelector インターフェイスは Spring Boot でよく使用されます
public interface ImportSelector {
//AnnotationMetadata 被@Import注释的类注解信息
//导入配置类全限定名称
String[] selectImports(AnnotationMetadata importingClassMetadata);
...
}
3.2 AutoConfigurationImportSelector
AutoConfigurationImportSelector は、ImportSelector インターフェイスを間接的に実装し、自動構成クラスをインポートします。 自動構成は、jar 内の指定されたファイルからロードされる構成クラスのリストを読み取ります。 場所: META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
Spring Boot (2.7) より前のバージョンは、 spring.factories ファイルを読み取ります。下位互換性のために spring.factories を保持します。
3.3 @AutoConfiguration アノテーション
新しいアノテーション @AutoConfiguration は自動構成クラスで使用されます。自動構成クラスに焦点を当てた、拡張された @Configuration と同等です。@AutoConfiguration は、after、afterNames、before、benameames 属性による自動構成の並べ替えもサポートしており、複数の自動構成クラスが実行される順序を決定します。
@AutoConfiguration(after = DataSourceAutoConfiguration.class, before = TransactionAutoConfiguration.class)
@ConditionalOnClass({ LocalContainerEntityManagerFactoryBean.class, EntityManager.class, SessionImplementor.class })
@EnableConfigurationProperties(JpaProperties.class)
@Import(HibernateJpaConfiguration.class)
public class HibernateJpaAutoConfiguration {
}