走査素子による注入依存性
📖 ✏️
走査素子による自動注入依存性
SpringBeanを登録する方法には、@Beanを使用する方法、XMLを使用する方法、およびコンポーネントスキャンの方法があります.登録が必要なスプリングシートが数百個に達すると、手動で登録するのは非常に面倒なことになります.漏れの問題も発生します.
素子走査方式は、スプリングbeanを個別の設定情報がなくても自動的に登録することができる.また、依存関係を自動的に注入する@Autowired
機能も提供されるので、スプリングbeanをより容易に管理することができる.
1.構成部品スキャンの使用方法
コンポーネントスキャンには@ComponentScanを使用します.構成部品スキャンを使用するには、まず@ComponentScanを構成情報に貼り付けます.コンポーネントスキャン@Componentコメントのあるクラスを名前でスキャンし、SpringBeanとして登録します.beanに登録したいクラスに@Componentを追加すればよい.
依存関係注入@Autowiredを使用します.@Autowiredをbeanとして登録されているクラスのジェネレータに貼り付けると、スプリングコンテナは登録されているbeanでパラメータタイプに対応するインプリメンテーションボディを検索します.そして,依存関係注入を自動的に行う.
構成部品スキャンの適用例コード
@Component
public class MemoryMemberRepository implements MemberRepository {}
@Component
public class RateDiscountPolicy implements DiscountPolicy {}
@Component
public class MemberServiceImpl implements MemberService{
private final MemberRepository memberRepository;
@Autowired // 마치 ac.getBean(MemberRepository.class)와 같이 해당 타입으로 조회되는 Bean을 찾아서 등록한다.
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
以下のコンポーネントスキャン構成情報ファイル(AutoAppConfig.class
)によってスプリングコンテナを生成するテストにより、1トンのbean登録に関する内容と、@Autowired
を用いて依存関係注入を完了する内容がログに表示される.public class AutoAppConfigTest {
@Test
void basicScan() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
MemberService memberService = ac.getBean(MemberService.class);
assertThat(memberService).isInstanceOf(MemberService.class);
}
}
ログを表示して、構成部品スキャンが正常に動作していることを確認します.2.素子走査の運動原理
素子走査と自動依存注入がどのように動作するかを図により理解した.
2-1. @ComponentScan
@ComponentScan
は、@Component
が貼られたすべてのクラスをspringbeanとして登録する.この場合springbeanのデフォルト名はクラス名です.しかし、一番前の字だけは小文字を使います.springbeanの名前を直接指定する場合は、@Component("사용할 이름")
に指定できます.2-2. @自動注入Autowired依存関係
ジェネレータに
@Autowired
を指定すると、スプリングコンテナは、スプリングbeanのekを自動的に検索して注入します.この場合、デフォルトのクエリー・ポリシーでは、同じタイプの空を検索する方法が使用されます.getBean(클래스이름.class)
と同じ方式と言える.生成者に多くのパラメータがある場合でも、問題なく自動注入を見つけることができます.
サマリ
@ComponentScan
および@Component
のすべてのクラスをスプリングbeanとして登録する.@Autowired
を用いた.ジェネレータに@Autowired
を追加すると、スプリングbeanに対応するパラメータのタイプが検索され、登録されます.@Component("원하는 이름")
で別途指定できます.Reference
この問題について(走査素子による注入依存性), 我々は、より多くの情報をここで見つけました https://velog.io/@woply/컴포넌트-스캔-방식으로-의존-관계-주입하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol