스프링 빈(Bean)

sieun·2021년 7월 5일
0

spring

목록 보기
3/3

빈(Bean)

스프링 IoC컨테이너가 관리하는 객체로 applicationContext가 만들어서 그 안에 담고 있는 객체


빈 만드는 방법

특정한 인스턴스를 스프링 컨테이너에서 어떻게 빈으로 만들수 있을까? 두 가지의 방법이 존재한다.

1) Component Scanning

2) 직접 xml이나 자바 설정 파일에 등록


1) Component Scanning방법

어노테이션 프로세서 중에 IoC컨테이너를 만들고 그 안에 빈을 등록할 때 사용하는 여러가지 인터페이스를 '라이프 사이클 콜백'이라고 한다. 여러가지 라이프 사이클 콜백 중에는 @Component (@Repository, @Service, @Controller, @Configuration, 사용자 정의)가 있는데 해당 어노테이션이 붙어있는 모든 클래스를 찾아서, 그 클래스의 인스턴스를 만들어 빈으로 등록한다.

@Component 어노테이션을 어디서부터 찾아야 하는지는 @SpringBootApplication안의 @ComponentScan이라는 어노테이션이 알려준다. @SpringBootApplication이 붙은 클래스의 위치부터 하위 패키지에 있는 모든 클래스를 다 찾아보면서, @Component가 붙어있는 클래스를 모두 찾아 빈으로 등록하는 Component Scanning을 한다.
따라서, 직접 빈으로 등록하지 않아도 스프링이 IoC컨테이너가 알아서 자동으로 만들어 빈으로 등록해준다.


< Filter >

Component Scan을 한다고 해서 모든 어노테이션들을 처리하여 빈들로 등록해주는 것은 아니다. Filter로 어떤 어노테이션을 스캔할지 하지 않을지 걸러줄 수 있다.

@ComponentScan(excludeFilter = { @Filter(type = FilterType.CUSTOM.classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM.classes = AutoConfigurationExcluderFilter.class)}



2) xml또는 자바설정 파일에 등록하는 방법

@Configuration
public class SampleConfig{
	@Bean
	public SampleController sampleController(){
		return new SampleController();
	}
}

위의 코드는 자바 설정파일에 빈을 직접 등록하는 방법에 대한 것이다. @Configuration도 컴포넌트이기 때문에 Component Scanning이 가능하며 sampleController()가 리턴하는 객체 자체가 빈으로 등록이 된다. 이 때, @Controller를 붙이지 않아도 괜찮다.

profile
열심히 공부중입니다😇

0개의 댓글