スイープエレメント


スイープエレメント


AppConfigを使用する場合、@Beanを1つずつ貼り付けて依存関係を形成します.
コードが多ければ多いほど、コードを設定すればするほど、管理が難しくなります.
そこでspringは@ComponentScan,@Componentの機能を提供しています.
package hello.core;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
public class AutoAppConfig {}
構成部品スキャンを使用するには、@ComponentScanを構成情報に貼り付けるだけです.
このコンポーネントスキャンでは、@ComponentScanを持つクラスをスキャンし、@ComponentScanを含むパッケージのサブパッケージをスキャンし、Spring Binとして登録します.
※Springプロジェクトの「Artifact名」+Applicationを初めて作成します.JAvaには@SpringBootApplicationというコメントが付いています.このコメントには@ComponentScanが付いています.
...
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {...}

構成部品


SpringBinに登録するクラスに@Componentを貼り付けます
@Component
public class OrderServiceImpl implements OrderService{...}

...

デフォルトでは、空の名前は前の文字を小文字に変更することで登録されます.
空の名前を直接指定する場合は、@Component(「name」)として指定できます.
では、依存関係をどのように注入するのでしょうか.

注入依存関係(Autowired)

@Component
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

    @Autowired // 생성자가 하나 있으면 생략 가능
    public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }

ジェネレータに@Autowiredを指定すると、スプリングコンテナは自動的に該当するスプリング空席を検索して注入します.
この場合、基本クエリーポリシーは、同じタイプの空を検索して注入します.
reference-金英漢のスプリングコア原理-基本編