이 두가지 방법중 컴포넌트 스캔을 활용한 방법으로 스프링 빈을 등록하려고 한다.
@Component
@Controller
@Service
@Repository
컴포넌트 스캔을 통해서 스프링 빈으로 등록을 시키기 위해서는 각각에 맞는 애노테이션을 등록해주면 된다. 컨트롤러, 서비스, 레포지토리에 맞는 애노테이션을 사용하면 되는데 세 애노테이션이 @Component
에 포함되기 때문에 세 가지 경우 모두에 @Component
를 사용해도 무방하다.
컴포넌트 활용을 통한 스프링 빈 등록 예시는 다음과 같다.
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;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
의존관계 주입이란 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어주도록 하는 것을 말하고 이는 DI(Dependency injection)
또는 의존성 주입
이라고 한다.
의존성 주입을 하기 위해서는 @Autowired
애노테이션을 붙여주면 된다.
@Autowired
를 활용한 의존관계 주입 예시는 다음과 같다.
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}