Component scan
- component 가 포함된 어노테이션을 사용하면 자동으로 스프링 빈으로 등록된다.
- 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다. 따라서 같은 스프링 빈을 공유할 경우 모두 같은 객체이다.
직접 코드 작성
- SpringConfig 클래스 작성하여 Bean으로 직접 등록한다.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
- controller는 스프링에서 관리해야 하기 때문에 component scan을 사용한다.
- controller, service, repository 같은 정형화 된 코드에는 component scan을 주로 사용한다.
- 정형화 되지 않거나 구현한 클래스가 변경될 가능성이 있는 경우에 직접 코드로 작성한다.
참조
스프링 입문 - 김영한