Spring入門-コード学習によるspringブート,Web MVC,DBアクセス技術[spring binとの依存関係]
スプリングシートに関連
構成部品スキャンと自動依存関係の設定
会員コントローラが会員サービスと会員ファイルの依存関係を使用する準備をする過程.
メンバーコントローラへの依存関係の追加
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;
}
}
このように外部から依存関係を加えることをDIと呼び,依存性注入と呼ぶ.
エラー発生
Consider defining a bean of type 'hello.hellospring.service.MemberService' in
your configuration.
ソリューション:memberServiceはspringbinとして初期登録されていないため、登録するだけです.スプリングシートを登録する2つの方法
素子走査の原理
@Componentでノイズが発生した場合は、自動的にスプリングシートとして登録されます.
@Controllerがあれば、自動的にスプリングシートとして登録されます.これもコンポーネントスキャンのためです.
@Componentを含めると、注記もSpringBinとして自動的に登録されます.
- @Controller
@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 {
}
スプリングがスプリング容器にスプリングシートを登録する場合、基本的には単色調である.(1つだけ登録して共有する)したがって、同じスプリングシートであれば、同じ例である.設定は単調でないように設定できますが、特別な場合を除いては、ほとんどが単調を使用します.
Javaコードを使用してスプリング空席を直接登録する
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など、スプリングによって管理されるオブジェクト上でのみ実行されることに注意してください.自分で作成したオブジェクトには、スプリングシートとして登録されません.
リファレンス(リファレンス)
Reference
この問題について(Spring入門-コード学習によるspringブート,Web MVC,DBアクセス技術[spring binとの依存関係]), 我々は、より多くの情報をここで見つけました https://velog.io/@mon99745/스프링-입문-코드로-배우는-스프링-부트-웹-MVC-DB접근-기술-스프링-빈과-의존관계テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol