스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - (컴포넌트 스캔과 자동 의존관계 설정)

홍범선·2023년 4월 28일
0

스프링

목록 보기
13/35

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - (컴포넌트 스캔과 자동 의존관계 설정)

  1. 스프링 컨테이너 등록

    new에서 하게 되면 여러 컨트롤러에서 memberSerivce를 가져다가 쓸 수 있는데 할 때마다 객체를 생성하는 것은 불필요하다. 스프링 컨테이너에 등록하고 쓰면 된다.

    생성자를 호출하는데 생성자에 Autowired 되어 있으면 스프링이 memberService를 가져다가 연결 해줌

  2. 하지만 에러 발생

왜냐하면 MemberService는 순수 자바 클래스임 @controller도 아니고 순수한 자바 코드이기 때문이다.


서비스 이노테이션을 넣으면 된다. 마찬가지로 memberRepository도 바꿔준다.

리포지토리는 @Repository로 바꿔준다.

MemberContoller가 생성될 때 스프링 bean에 등록되어 있는 memberService 객체를 넣어준다. 이것이 DI 의존성 주입이다. 마찬가지로 스프링에 등록되어 있는 memberRepository 객체를 넣어준다.

스프링이 올라올 때 컴포넌트와 관련된 어노테이션(컨트롤러, 서비스, 리포지토리 등)이 있으면 스프링이 객체를 하나씩 생성하여 등록하여 관리한다.(스프링 빈으로 생성)
AutoWired는 연결, 즉 연관관계를 지정하는 방법이다.


만약 바깥 패키지에 컴포넌트를 지정하면 어떻게 될까?
안된다.
해당 패키지 해위 패키지에서만 스프링이 만들어 진다.
스프링은 스프링 빈으로 등록할 때, 기본적으로 싱글톤(유일하게 하나만 등록해서 공유한다.)
같은 스프링 빈이면 모두 같은 인스턴스다.

profile
알고리즘 정리 블로그입니다.

0개의 댓글