스프링 빈(Bean)
빈(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를 붙이지 않아도 괜찮다.
Author And Source
이 문제에 관하여(스프링 빈(Bean)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sileeee/스프링-빈Bean저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)