스프링 프레임워크 빈 등록과 컴포넌트 스캔

수동 빈 등록 방법

설정 클래스에 다음과 같이 새 메소드를 만들어 빈으로 생성하길 원하는 클래스의 객체를 리턴하도록 만든다.

@Configuration
public class AppCtx {
	@Bean
	public ChessBoardPrinter chessBoardPrinter() {
		return new ChessBoardPrinter();
	}
	
	@Bean
	@Qualifier("status")
	public StatusPrinter statusPrinter() {
		return new StatusPrinter();
	}
}

기본적으로 빈의 이름은 클래스명의 첫 글자를 소문자로 바꾼 이름이 된다. 다른 이름을 원한다면 @Qualifier 어노테이션으로 직접 지정할 수 있다.

컴포넌트 스캔

스프링 프레임워크가 자동으로 클래스를 검색해 별다른 설정 코드를 짤 필요 없이 빈으로 등록시키는 기능이다.
빈으로 등록시키고 싶은 클래스에 자동 스캔되는 어노테이션을 달고 설정 클래스에 @ComponentScan 어노테이션을 달아 주면 끝이다.

자동 스캔되는 어노테이션의 종류는 @Component, @Controller, @Service, @Repository, @Aspect, @Configuration 이 있다.

@Configuration
@ComponentScan(basePackages = {"spring"})
public class AppCtx {
    ...
}

스프링 부트의 경우

@SpringBootApplication 안에 @ComponentScan이 포함되어 있기에 별다른 설정 없이 애플리케이션이 존재하는 패키지와 그 아래 모든 패키지들이 스캔된다.

댓글 남기기