IoCコンテナと空(4):アセンブリと構成部品のスキャン


1. ComponentScan


  • @SpringBootApplication宣言を参照してください.@ComponentScan宣言が定義されています.
  • したがって、
  • は、宣言された位置からすべての要素を探索する.(クラスを含むパッケージ(me.hyunki.demospring 51)の構成部品のみをスキャン)
  • Autowiredがあまりよくない場合は、ComponentScanの範囲をよく検討する必要があります.
  • @Filter:スキャン時にフィルタリングする設定
  • 2.エンベロープを使用した空の登録

    public static void main(String[] args) {
            new SpringApplicationBuilder()
                    .sources(Demospring51Application.class)
                    .initializers((ApplicationContextInitializer< GenericApplicationContext >)
                    applicationContext -> {
                            applicationContext.registerBean(MyBean.class);
                    })
                    .run(args);
        }
  • @ComponentScanを使用するよりも、
  • のパフォーマンスのメリットは、アプリケーションの実行時間を短縮することです.
  • ですが、アプリケーションの実行時間を短縮することに大きな意味があるかどうか分かりません.
  • その利点は、
  • @ComponentScanの範囲外の空をスキャンできることです.
  • は、アプリケーションの実行時間というパフォーマンスのメリットだけで、@ComponentScanを捨てるメリットはありません.
  • 3.スキャン素子の主な機能

  • スキャン位置
  • を設定する.
  • フィルタ:スキャンまたはスキャンしないアレイ(@Filter)
  • 4.@Component(スキャン素子のターゲット)

  • @Repository
  • @Service
  • @Controller
  • @Configuration
  • 5.動作原理

  • @ComponentScanは、スキャンするパッケージおよび操作に関する情報
  • を提供する.
  • 実際のスキャンは、ClassPostProcessor BeanFactory PostProcessorの構成によって処理される.