Development/Spring
[Spring] 스프링 빈을 등록하는 방법1: 컴포넌트 스캔
luminous13
2021. 11. 19. 16:35
컴포넌트 스캔(Component Scan)
스프링이 @Conponent 애노테이션을 이용해 컨테이너에 빈을 등록하는 방법을 말한다. 현재에는 @Controller, @Service, @Repository 애노테이션을 많이 사용한다. 이 애노테이션을 사용해도 똑같이 작동한다. 왜냐하면 이 애노테이션 정의 안에 @Component 애노테이션이 들어있기 때문이다.
@Controller
스프링은 @Controller를 발견하면 어노테이션이 붙은 클래스의 객체를 생성해 스프링 컨테이너에 등록을 한다. 이 말은 스프링 컨테이너에서 스프링 빈이 관리된다는 말과 같다.
@Autowired 어노테이션
@Autowired 어노테이션이 생성자에 붙어있을 때, 스프링은 스프링 컨테이너에서 멤버 서비스 빈 객체를 가져와서 멤버 컨트롤러 빈 객체에 넣어준다. 하지만 이때 멤버 서비스를 찾을 수 없다고 빨간 줄이 뜬다면 멤버 서비스 클래스를 빈 객체로 등록하지 않아서 그렇다.
@Service
멤버 서비스에 @Service 어노테이션을 붙여서 스프링 빈 등록을 한다.
의존성 주입(DI, Dependency Injection)
이렇게 컨트롤러와 서비스에 @Autowired를 생성자에 붙어주면, 컨트롤러가 생성될 때 스프링 컨테이너에서 서비스 객체를 가져와 컨트롤러 객체와 연결해주는데 이것을 의존성 주입이라고 한다.
@Repository
구현체에도 어노테이션을 붙여 스프링 빈에 등록한다.