본문 바로가기

개발/Spring

[Spring]@ComponentScan

스프링 프로젝트를 구축함에 있어, @Bean을 통해 스프링 빈을 생성할 수 있었지만, 만약 프로젝트 규모가 커진다면 매번 생성해야 할 빈을 생성하는 부분에 모두 @Bean 어노테이션을 지정해주어야 하는 번거로움이 있다.

 

스프링에서는 이러한 문제를 해결하기 위해 @ComponentScan 어노테이션이 존재한다.

 

설정클래스에 @ComponentScan 을 붙여주고

 

빈을 생성할 클래스에서 @Component 어노테이션을 붙여주면 된다.

컴포넌트 어노테이션으로 빈 생성

그리고 클래스 생성자에 의존관계를 통해 주입을 받아야 하는 경우 @Autowired 어노테이션을 지정하면 된다.

Autowired 어노테이션을 통한 의존관계 명시

컴포넌트 스캔의 기본 대상은 아래와 같다.

@Component : 컴포넌트

@Controller : 스프링 MVC에서 컨트롤러로 사용

@Service : 서비스 계층임을 표기해주는 역할(비즈니스 로직)

@Repository : 스프링의 데이터 접근 계층에서 사용

@Configuration : 스프링 설정 정보로 인식, 싱글톤을 유지하도록 도와줌