Springコア原理TIL(8)


[参考講座]金英漢のスプリングコア原理-基本編

💡スイープエレメント


素子スキャンとDI操作


1. @ComponentScan


  • @CopentScan@CopentScan@Componentを持つすべてのクラスをSpringBinとして登録します.
  • この場合springbinの基本名称はクラス名を使用するが、先頭のアルファベットは小文字
  • スプリングシートの名称を直接指定したい場合@Component("memberService2")このように命名すればよい.
  • 2.自動注入自動接続依存関係


  • ジェネレータに@Autowiredを指定すると、スプリングコンテナは自動的にスプリング空きスペースを検索して注入します.
  • メンバーRepositor.classと同じ

    生成者に多くのパラメータがあっても、見つかり、自動的に注入されます.
  • ▼▼ナビゲーション位置とデフォルトスキャンターゲット


    ナビゲートするパッケージの開始位置を指定します


    必要な位置から探索してこそ、時間を節約することができます.
    @ComponentScan(
              basePackages = "hello.core",
    )
  • basePackages:閲覧するパッケージの開始位置を指定します.これらのパッケージを含むすべてのサブパッケージを参照します.
  • basePackageClasses:ナビゲーション開始位置として指定カテゴリのパケットを指定します.
  • 指定されていなければ@ComponentScan付加的な設定情報クラスパケットが開始位置となる.
  • 推奨方法


    情報クラスの場所をプロジェクトの上部に設定します.最近のSpringBootでもデフォルトでこの方法が提供されています.

    ▼▼素子スキャンデフォルトターゲット


    コンポーネントスキャンには@Componentだけでなく、以下の追加内容も含まれます.
  • @Component:素子走査用
  • @Controller:スプリングMVC用コントローラ
  • @Service:スプリングビジネスロジック用
  • @Repository:スプリングデータアクセス層用
  • @Configuration:スプリング設定情報用
  • ▼▼▼フィルター

  • include Filters:他の素子スキャンターゲットを指定
  • 除外フィルタ:素子スキャン以外の対象を指定
  • #重複登録との競合


  • 自動空登録vs自動空登録
    :構成部品スキャンでは、自動的にスプリングシートが登録されます.名前が同じであれば、スプリングシートにConflictingBeanDefinitionExceptionエラーが発生します.

  • 手動空登録vs自動空登録
    この場合、手動空登録は優先権を有する.手動アイドリング自動アイドリング
  • しかし、これでは、本当に捉えにくいバグが発生します.
    したがって、最近SpringBootでは、手動空登録と自動空登録が競合したときにエラーが発生するようにデフォルト値が変更されました.

    自動注入依存関係を整理してみよう…!
    私の目標は今週までにこの授業を終えることです.あなた.みんな...!がんばって…!