스프링 빈을 등록하는 방법에는 두가지 방법이 있다.
1. 컨포넌트 스캔과 자동 의존 관계 설정
2. 자바코드로 직접 스프링 빈 등록
@Controller
public class MemberController{
private fainal MemberService memberService;
@Autowired
//스프링 컨테이너에 등록
public class MemberController(MemberSerivece memberservice){
this.memberService = memberService;
}
}
생성자에 @Autowired가 있으면, 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 이렇게 객체 의존 관계를 외부에서 넣어주는 것을 DI(Dependency Injection) 의존성 주입이라고 한다.
controller만 스프링 빈을 등록하면, service는 스프링 빈에 등록되지 않았기 때문에 오류가 발생한다.
Consider defining a bean of type ‘hello.hellospring.service.MemberService’ in your configuration
기존 코드에서 작성한 회원 서비스와 회원 리포지토리의 @Service , @Repository , @Autowired annotation을 제거하고 진행한다.
@Configuration
public class SpringConfig{
@Bean
public MemberService emeberSerivce(){
return new MemberSerivcememberRepository());
}
@Bean
public MemberRepository memberRespository(){
return new MemoryMemberRepository();
}
}
다음 글은 인프런 김영한 강사님의 스프링 강의 복습용입니다 :)