- 컴포넌트 스캔과 자동 의존관계 설정
회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비.
컨트롤러가 서비스를 통해 회원가입 하고 서비스를 통해 조회를 할 수 있음 ( 컨트롤러가 서비스를 의존함) (의존관계)
@Controller : 스프링 컨테이너에 등록된 후 스프링에서 관리가 됨.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@Autowired
생성자에 @Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다.
이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI (Dependency Injection), 의존성 주입이라 한다.
이전 테스트에서는 개발자가 직접 주입했고, 여기서는 @Autowired에 의해 스프링이 주입해준다
위 코드대로 실행 시 오류 발생
Service 클래스에 @ Service 를 작성 하면 스프링 컨테이너에 등록
회원 서비스 스프링 빈 등록
회원 리포지토리 스프링 빈 등록
컴포넌트 스캔 원리
@Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다.
@Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문이다.
@Component 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다.
(@Controller)
(@Service)
(@Repository)
스프링 빈 등록 이미지
'스프링 > 스프링 입문 - 김영한' 카테고리의 다른 글
11. 회원 서비스 테스트 (0) | 2023.01.10 |
---|---|
10. 회원 서비스 개발 (0) | 2023.01.10 |
9. 회원 리포지토리 테스트 케이스 작성 (0) | 2023.01.10 |
8. 회원 도메인과 리포지토리 만들기 (0) | 2023.01.05 |
자바 문법 정리 ( Map) (0) | 2023.01.05 |