컴포넌트 스캔이란 @Component 어노테이션을 말하는데
@Component
@Repository, @Service, @Controller 등을 포함하고있다.
이 방식을 사용하여 스프링이 이것이 리포지토리,서비스,컨트롤러라는걸 알수 있게 하여 스프링 빈으로 자동 등록되도록 한다.
@Autowired
스프링이 연관된 객체를 스프링 컨테이너에 찾아서 넣어준다.
이것을 DI(의존성 주입) 이라고 한다.
스프링은 스프링 빈을 등록할 때 일반적으로 싱글톤으로 등록한다
싱글톤이란 유일하게 하나만 등록하여 모두 같은 하나의 인스턴스만 사용하도록 하는것이다.
여기서는 기존에 설정했던 컴포넌트 스캔을 모두 지우고 사용한다.
package hello3.hellospring;
import hello3.hellospring.repository.MemberRepository;
import hello3.hellospring.repository.MemoryMemberRepository;
import hello3.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());
}
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
@Configuration
스프링 빈으로 등록하라고 스프링에 알려주는 어노테이션이다.