순간을 기록으로

[Spring] 스프링 빈을 등록하는 방법1: 컴포넌트 스캔 본문

Development/Spring

[Spring] 스프링 빈을 등록하는 방법1: 컴포넌트 스캔

luminous13 2021. 11. 19. 16:35

컴포넌트 스캔(Component Scan)

스프링이 @Conponent 애노테이션을 이용해 컨테이너에 빈을 등록하는 방법을 말한다. 현재에는 @Controller, @Service, @Repository 애노테이션을 많이 사용한다. 이 애노테이션을 사용해도 똑같이 작동한다. 왜냐하면 이 애노테이션 정의 안에 @Component 애노테이션이 들어있기 때문이다.

@Service 어노테이션 안에 정의된 @Component

 

@Controller

스프링은 @Controller를 발견하면 어노테이션이 붙은 클래스의 객체를 생성해 스프링 컨테이너에 등록을 한다. 이 말은 스프링 컨테이너에서 스프링 빈이 관리된다는 말과 같다. 

 

 

 

 

@Autowired 어노테이션

@Autowired 어노테이션이 생성자에 붙어있을 때, 스프링은 스프링 컨테이너에서 멤버 서비스 빈 객체를 가져와서 멤버 컨트롤러 빈 객체에 넣어준다. 하지만 이때 멤버 서비스를 찾을 수 없다고 빨간 줄이 뜬다면 멤버 서비스 클래스를 빈 객체로 등록하지 않아서 그렇다. 

 

 

@Service

멤버 서비스에 @Service 어노테이션을 붙여서 스프링 빈 등록을 한다.

 

 

의존성 주입(DI, Dependency Injection)

이렇게 컨트롤러와 서비스에 @Autowired를 생성자에 붙어주면,  컨트롤러가 생성될 때 스프링 컨테이너에서 서비스 객체를 가져와 컨트롤러 객체와 연결해주는데 이것을 의존성 주입이라고 한다.

 

@Repository

 

구현체에도 어노테이션을 붙여 스프링 빈에 등록한다.

Comments