HanJun.Dev
Spring Bean 이란? 본문
빈(Bean)
Spring IoC 컨테이너가 관리하는 자바 객체를 빈이라고 부른다.
new 연산자로 객체 생성했을 때 그 객체는 빈이 아니다.
ApplicationContext.getBean()으로 얻어질 수 있는 객체가 빈이다.
Spring에서 빈은 ApplicationContext가 알고 있는 객체를 의미한다.
* AnnotationConfigApplicationContext는 AppConfig.class를 읽고 빈 설정 메타정보를 생성.
스프링에서 빈은 보통 싱글톤으로 존재한다.
*싱글톤 : 어떤 클래스가 최초 한번만 메모리에 할당하고 그 메모리에 객체를 만들어 사용하는 디자인 패턴(객체를 하나만 생성하는 패턴)
Spring IoC
*DI(Dependency Injection)
개발자가 객체를 new해서 생성하지 않고, IoC컨테이너에 존재하는 Bean 객체를 주입해준다.
해당 기능을 사용하면 싱글톤, 개발자의 편의, 성능 이슈 등등을 해결해준다.
*객체의 Scope
IoC 컨테이너에 객체의 제어권을 넘겨주면, IoC 컨테이너가 해당 객체의 Scopre를 관리해준다.
Spring IoC 컨테이너에 빈을 등록하는 방법
- Component Scanning
- 빈 설정파일에 직접 빈 등록
1. Component Scan
@ComponentScan 어노테이션과 @Component 어노테이션을 사용해서 빈을 등록하는 방법이다.
@ComponentScan은 어느 지점부터 컴포넌트를 찾으라고 알려주는 역할을 하고 @Component는 실제로
찾아서 빈으로 등록할 클래스를 의미한다.
2. 빈 설정파일에 직접 빈 등록
자바 클래스를 생성
@Configuration 애노테이션을 클래스에 붙인 후 @Bean 애노테이션을 사용해 직접 빈을 정의한다.
@Configuration
public class SampleConfiguration {
@Bean
public SampleController sampleController() {
return new SampleController;
}
}
@Configuration 도 @Component를 사용하기 때문에 @ComponentScan의 스캔 대상이 되고
따라서 빈 설정 파일이 읽힐 때 그 안의 빈들이 IoC컨테이너에 등록된다.
'Back-end > Spring' 카테고리의 다른 글
Spring 개발 시 필수 어노테이션 (0) | 2022.07.14 |
---|---|
스프링 입문 - 회원 관리 예제 (0) | 2022.01.28 |