본문 바로가기
코드로 배우는 스프링 부트 - 인프런

컴포넌트 스캔과 자동 의존관계 설정

by step 1 2022. 8. 9.
반응형

회원 컨트롤러에 의존관계 추가

 

@Autowired 어노테이션이 있으면 해당 메서드와 연관된 객체를 컨테이너에서 찾아서 연결 시켜준다. -> DI(의존성 주입)

 

@Controller: 컨트롤러를 통해서 외부요청을 받는다

@Service: 비즈니스 로직 생성

@Repository: 데이터 저장

 

위의 방법은 컴포넌트 스캔 방식으로 자동 의존관계 설정한 것이다.

원래는 @Component라고 해야 하지만 각 어노테이션마다 @Component가 내장 되어있기 때문에 동작한다.

 

MemberController 작성

package hello.hellospring.controller;

import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class MemberController {

    // 컨트롤러마다 서비스를 생성해서 사용할 필요가 없음 -> 하나만 생성해서 공유하여 사용
//    private final MemberService memberService = new MemberService();

    private final MemberService memberService;

    // 생성자에 @Autowired 어노테이션이 선언되어있으면 필요한 객체를 스프링 컨테이너(been 등록되어있는)에서 찾아서 연결 시켜준다. -> DI
    // 생성자는 자동으로 처음 실행된다.
    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }


}

 

컴포넌트 스캔의 기준은 아래 어노테이션이 작성된 하위 패키지에만 적용된다.

@SpringBootApplication

 

빈등록은 하나만!! -> 하나로 서로 공유하여 사용(메모리 절약)

반응형