1.pomファイルの照会
私はすべてのプロジェクト関連のWebパッケージをインポートしないのはなぜ、プログラムがそれを実行することができるのだろうか?
Springbootは実際に私たちはパッケージが必要なWebプロジェクトに依存するすべてのjarファイルをインポートするのに役立ち
ソースからそれを見てみましょう!
まず、私たちのpom.xmlファイルを開いて親プロジェクトを探します。
その後、我々は、それが依存している依存親プロジェクト春ブート依存関係に指していることを見ることができます
これは本当にすべてを管理しているspringboot依存性とも呼ばれ、バージョンspringbootに依存 仲裁センターのバージョンSpringBoot。
その後、我々は春ブート依存関係に指し示します
私たちは、ラベルの瓶のパッケージプロパティにすべての点がspringBootニーズの内側に配置されました。
私たちは依存性が記述されたデフォルトのバージョン番号ではありませんインポートした後(もちろん、我々はバージョンを宣言する必要がある依存関係はありません)
その後、我々は、これがポンポンファイルにそれに依存しているものを、ばねブートスタータウェブ参照してください?
< 依存性> < 依存> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >春・ブート・スターター・ウェブ</ たartifactId > </ 依存関係>
それは、私たちはすべての関連ジャーパッケージをインポートするのに役立つspringBootシーンスターターWeb開発です。
メインプログラムの2、入口探ります
@SpringBootApplication パブリック クラスDemoApplication { 公共 静的 ボイドメイン(文字列[]引数){ SpringApplication.run(DemoApplication。クラス、引数)。 } }
ノートSpringBootApplicationは、プロジェクトがこのクラスで実行する必要がありますspringboot開始springboot、メイン番組カテゴリのspringbootの記述であるクラスにマーク。
私たちは、コメントにポイントを見ることができます:
SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = {@ org.springframework.context.annotation.ComponentScan.Filter(タイプ= org.springframework.context.annotation.FilterType.CUSTOM、クラス= {org.springframework.boot.context.TypeExcludeFilter。クラス })、org.springframework.context.annotation.ComponentScan.Filter(タイプ= org.springframework.context.annotation.FilterType.CUSTOM、@クラス= {org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter。クラス})}) パブリック @ インタフェースSpringBootApplication { }
これはSpringBootConfiguration、EnableAutoConfigurationは、ComponentScanは一般よう配置された3つの注釈を含む音符の組み合わせ、です。
前記SpringBootConfigurationに表される:springBoot配置、構成、および、容器の構成要素です。
その後、我々はEnableAutoConfigurationへの注釈点を見て、それがオープンspringBoot自動構成機能は、自動設定を有効にするspringBootは、自動設定を有効に伝える.EnableAutoConfigurationです。
その後、我々はこのコメントで見ることができるポイントにEnableAutoConfigurationを行きます
@ org.springframework.boot.autoconfigure.AutoConfigurationPackage @ org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationImportSelector。クラス}) パブリック @のインタフェース EnableAutoConfiguration {
}
また、ノートの組み合わせであり、AutoConfigurationPackage自動構成パッケージには、我々はそれがポイントに引き続き見ることができます
@import(AutoConfigurationPackages.Registrar。クラス) パブリック @のインタフェースAutoConfigurationPackage { }
この注釈をインポートすることは根本的springbootのコメントであり、我々は見ることができますレジストラ登録に指すように続け
静的 クラスレジストラが実装しImportBeanDefinitionRegistrar、DeterminableImports { @Override 公共 のボイドregisterBeanDefinitions(AnnotationMetadataメタデータ、BeanDefinitionRegistryレジストリ){ 登録(レジストリ、新しいPackageImport(メタデータ)を.getPackageName()); } @Override 公共セット<オブジェクト> determineImports(AnnotationMetadataメタ){ 戻り Collections.singleton(新しいPackageImport(メタデータ))。 } }
これは、春のコンテナ船にいくつかのコンポーネントを追加することを意味します。このコンポーネントは、それに追加されますか?
新しいPackageImport(メタデータ)は、私たちが見て、デバッグモードを開くことができますされ、実際には、この注釈、春からすべてのパッケージ内のコンポーネントや他のパッケージのメインの設定クラスは、コンテナをスキャンします。
AutoConfigurationImportSelector注釈が自動的にクラスのコンテナをインポートするよう構成されています。
彼は、自動的に私たちのクラスは、このように私たちは自動設定を必要としない自動設定を実現し、肉INGで導入した構成されます。