[spring入門]とspring beanの依存関係
4584 ワード
金英漢先生の講義を聞きながら整理中です.
メンバーコントローラは、メンバーサービスから会員を入力、照会できます
->メンバーコントローラメンバーサービス依存
ControllerフォルダにMemberControllerを作成する
タイミングコントローラがある場合は、スプリングによって管理されます.
スプリングコンテナに空が生成されます.
スプリングコンテナによる管理
複数のコントローラが使えます.(exオーダー、)
1つだけ生成し、共有->スプリングコンテナに登録することができます(スプリングコンテナに1つしか登録されていません)、さまざまな追加効果が表示されます.
@Autowiredを使用してスプリングコンテナからインポートします.
@サービスをメンバーサービスに入れます.
@RepositoryをMemoryMemberRepositoryに挿入
コントローラ、リポジトリ、およびサービスの構造化モード
スプリングが上昇すると、コントローラライブラリがもたらされます.
->注入依存関係(DI)
スプリング空席を登録する2つの方法
構成部品スキャンと自動依存関係の設定
Javaコードを使用してスプリング空席を直接登録する
どちらも知らなければならない.
@Component AnotationはSpring Binとして自動的に登録されます.
すべてのレポートに@コンポーネントが含まれています
@Autowiredは関連ロールです
スプリングがスプリングコンテナにスプリング空として登録されている場合、デフォルトは単一の色調です.
すなわち、同じスプリングシートであれば、すべての例が同じである.(設定に変更可能、現在はX)
メンバー・サービスとメンバー・ライブラリの@Service、@Repository、@Autowiredコメントを削除します.
@Configuration@Beanを使用して直接登録
過去にxmlドキュメントに設定
DIには、フィールド注入、setter注入、作成者注入の3種類がある
フィールドの入力
@Authowired private MemberService memberService;
(あまり良くないですが、途中で交換できないので)
setter注入setter作成、呼び出し、setter注入
欠点は、コントローラを呼び出す人がいる場合、共通でなければならないことです.中間交換で問題が発生し、露呈する欠点がある
最近推奨されているスタイルは、インジェクション生成者の使用です.
アプリケーションのアセンブリポイントに入り、終了します.
(依存関係は、実行時に動的に変化することは少ない.)
構造化コントローラ、サービス、リポジトリなどのコードは、構成部品スキャンを使用します.
未定型の場合、または状況に応じてインプリメンテーションクラスを変更する必要がある場合は、設定によってスプリング空席として登録します.
->MemberRepository選択されていないデータストレージを想定
後で別のリポジトリに移動します.
既存の操作コードを変更せずに変更できる方法があります.
だからこれを使います.
構成部品をスキャンする場合は、多くの変更が必要です.
コードを直接実行する場合は、設定ファイルを変更するだけです.
既存のメンバーサービスや他のコードを変更することなく置き換えることができます.
メンバーコントローラは、メンバーサービスから会員を入力、照会できます
->メンバーコントローラメンバーサービス依存
構成部品スキャンと自動依存関係の設定
ControllerフォルダにMemberControllerを作成する
タイミングコントローラがある場合は、スプリングによって管理されます.
スプリングコンテナに空が生成されます.
スプリングコンテナによる管理
複数のコントローラが使えます.(exオーダー、)
1つだけ生成し、共有->スプリングコンテナに登録することができます(スプリングコンテナに1つしか登録されていません)、さまざまな追加効果が表示されます.
@Autowiredを使用してスプリングコンテナからインポートします.
@サービスをメンバーサービスに入れます.
@RepositoryをMemoryMemberRepositoryに挿入
コントローラ、リポジトリ、およびサービスの構造化モード
スプリングが上昇すると、コントローラライブラリがもたらされます.
->注入依存関係(DI)
スプリング空席を登録する2つの方法
構成部品スキャンと自動依存関係の設定
Javaコードを使用してスプリング空席を直接登録する
どちらも知らなければならない.
@Component AnotationはSpring Binとして自動的に登録されます.
すべてのレポートに@コンポーネントが含まれています
@Autowiredは関連ロールです
スプリングがスプリングコンテナにスプリング空として登録されている場合、デフォルトは単一の色調です.
すなわち、同じスプリングシートであれば、すべての例が同じである.(設定に変更可能、現在はX)
package hello.hellospring.service;
import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
// 회원가입
public Long join(Member member) {
validateDuplicateMember(member); // 같은 이름 X 중복회원검증
memberRepository.save(member);
return member.getId();
}
private void validateDuplicateMember(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
//전체 회원조회
public List<Member> findMember() {
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
}
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;
}
}
Javaコードを使用してスプリング空席を直接登録する
メンバー・サービスとメンバー・ライブラリの@Service、@Repository、@Autowiredコメントを削除します.
@Configuration@Beanを使用して直接登録
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();
}
}
それぞれ長所と短所がある過去にxmlドキュメントに設定
DIには、フィールド注入、setter注入、作成者注入の3種類がある
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
インジェクションジェネレータフィールドの入力
@Authowired private MemberService memberService;
(あまり良くないですが、途中で交換できないので)
setter注入setter作成、呼び出し、setter注入
欠点は、コントローラを呼び出す人がいる場合、共通でなければならないことです.中間交換で問題が発生し、露呈する欠点がある
最近推奨されているスタイルは、インジェクション生成者の使用です.
アプリケーションのアセンブリポイントに入り、終了します.
(依存関係は、実行時に動的に変化することは少ない.)
構造化コントローラ、サービス、リポジトリなどのコードは、構成部品スキャンを使用します.
未定型の場合、または状況に応じてインプリメンテーションクラスを変更する必要がある場合は、設定によってスプリング空席として登録します.
->MemberRepository選択されていないデータストレージを想定
後で別のリポジトリに移動します.
既存の操作コードを変更せずに変更できる方法があります.
だからこれを使います.
構成部品をスキャンする場合は、多くの変更が必要です.
コードを直接実行する場合は、設定ファイルを変更するだけです.
既存のメンバーサービスや他のコードを変更することなく置き換えることができます.
Reference
この問題について([spring入門]とspring beanの依存関係), 我々は、より多くの情報をここで見つけました https://velog.io/@vector13/spring-입문-스프링-빈과-의존관계テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol