SpringBoot-原則は、(b)の探求します

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で導入した構成されます。

 

おすすめ

転載: www.cnblogs.com/xiaoqiqistudy/p/11325881.html