Spring入門-コード学習によるspringブート,Web MVC,DBアクセス技術[spring binとの依存関係]


スプリングシートに関連

  • 素子を走査する自動依存関係
  • を確立する.
  • javaコードを使用してSpringBin
  • を直接登録
    構成部品スキャンと自動依存関係の設定
    会員コントローラが会員サービスと会員ファイルの依存関係を使用する準備をする過程.
    メンバーコントローラへの依存関係の追加
     package hello.hellospring.controller;
      import hello.hellospring.service.MemberService;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;
      @Controller
      public class MemberController {
          private final MemberService memberService;
          @Autowired
          public MemberController(MemberService memberService) {
                     this.memberService = memberService;
          }
    }
  • ジェネレータに@Autowiredがある場合は、スプリングコンテナでスプリングに関連するオブジェクトを検索します.
    このように外部から依存関係を加えることをDIと呼び,依存性注入と呼ぶ.
  • 以前の試験では開発者によって直接注入され、ここでは@Autowired注入スプリング
  • によって注入された.
    エラー発生
    Consider defining a bean of type 'hello.hellospring.service.MemberService' in
      your configuration.
    ソリューション:memberServiceはspringbinとして初期登録されていないため、登録するだけです.
    スプリングシートを登録する2つの方法
  • 素子を走査する自動依存関係
  • を確立する.
  • javaコードを使用してSpringBin
  • を直接登録
    素子走査の原理

  • @Componentでノイズが発生した場合は、自動的にスプリングシートとして登録されます.

  • @Controllerがあれば、自動的にスプリングシートとして登録されます.これもコンポーネントスキャンのためです.

  • @Componentを含めると、注記もSpringBinとして自動的に登録されます.
    - @Controller
  • @Service
  • @Repository
  • 会員サービススプリング登録
    @Service
        public class MemberService {
            private final MemberRepository memberRepository;
            @Autowired
            public MemberService(MemberRepository memberRepository) {
                this.memberRepository = memberRepository;
            }
    }
    tip:
    ジェネレータで@Autowiredを使用している場合は、オブジェクトの作成時に、スプリングコンテナで対応するスプリング空きスペースを検索して注入します.生成者が1人いれば省略できます.
    登録
     @Repository
        public class MemoryMemberRepository implements MemberRepository {
        
        }
  • 会員サービスと会員報告はスプリング容器にスプリングボックスとして登録されている.
  • tip:
    スプリングがスプリング容器にスプリングシートを登録する場合、基本的には単色調である.(1つだけ登録して共有する)したがって、同じスプリングシートであれば、同じ例である.設定は単調でないように設定できますが、特別な場合を除いては、ほとんどが単調を使用します.
    Javaコードを使用してスプリング空席を直接登録する
  • 会員サービスと会員ライブラリの@Service、@Repository、@Autowiredの注記をキャンセルします.
  • package hello.hellospring;
        import hello.hellospring.repository.MemberRepository;
        import hello.hellospring.repository.MemoryMemberRepository;
        import hello.hellospring.service.MemberService;
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.Configuration;
        @Configuration
        public class SpringConfig {
                 @Bean
            public MemberService memberService() {
                return new MemberService(memberRepository());
            }
            @Bean
            public MemberRepository memberRepository() {
              return new MemoryMemberRepository();
            }
    }
    ここでは、後でアノテーションライブラリを他のライブラリに変更するので、構成部品スキャンではなくJavaコードを使用してスプリングシートを設定します.
    tip:
    1)XMLに設定する方式もありますが、最近はあまり使われていません.
    2)DIにはフィールド注入,setter注入,コンストラクション関数注入の3つの方法がある.依存関係は実行中に動的に変化することが少ないため、作成者に注入することをお勧めします.
    3)実際の作業では,構造化コントローラ,サービス,リポジトリなどのコードは主に素子スキャンを用いる.
    4)@Autowired経由のDIは、hello Controller、memberServiceなど、スプリングによって管理されるオブジェクト上でのみ実行されることに注意してください.自分で作成したオブジェクトには、スプリングシートとして登録されません.
    リファレンス(リファレンス)
  • https://www.inflearn.com/