[Spring] 빈 (Bean)
인프런 - 백기선님의 예제로 배우는 스프링 입문(개정판)을 수강하며 정리한 글입니다.
빈(Bean) : 일반적인 객체에서 IoC 컨테이너가 관리하는 객체 (applicationContext 안에 담고 있는 객체)
-> new 를 통해 생성하는 객체는 해당하지 않는다 !
빈 설정 방법 : 이름 또는 ID, 타입, 스코프
빈 등록 방법
1. Component Scanning
: 어노테이션을 통한 등록
@ComponentScan 어노테이션과 @Component 어노테이션을 사용해서 빈을 등록하는 방법이다.
Spring IoC 컨테이너가 IoC 컨테이너를 만들고 그 안에 빈을 등록할 때 사용하는 인터페이스들을 라이프 사이클 콜백이라고 부른다.
라이프 사이클 콜백 중에는 @Component 어노테이션을 찾아 모든 클래스의 인스턴스를 생성해 빈으로 등록하는 작업을 수행하는 어노테이션 프로세서가 등록되어 있다.
@Component 어노테이션 : @Repository, @Service, @Controller, @Configuration, etc.
-> 빈으로 등록하지 않더라고 스프링이 알아서 ioc 컨테이너가 만들어질 때 빈으로 등록해준다.
2. 직접 등록
: XML이나 자바 설정 파일에 등록
자바 설정파일은 자바 클래스를 생성해서 작성할 수 있고 일반적으로 ~Configuration로 한다.
그리고 클래스에 @Configuration 어노테이션을 붙인다.
그 안에 @Bean 어노테이션을 사용해 직접 빈을 정의한다.
@Configuration
public class SampleConfiguration {
@Bean
public SampleController sampleController() {
return new SampleController;
}
}
-> 빈을 직접 정의해서 등록하면 @Component 애노테이션을 붙이지 않아도 된다.