Bean 이란?
- Spring IoC 컨테이너가 관리하는 자바 객체
- 객체들을 관리한다는 것은 개발자가 아닌 컨테이너가 객체의 생성부터 소멸까지의 생명주기(LifeCycle) 관리를 한다는 것 → 개발자들은 로직에 집중할 수 있음.
- new 연산자로 생성했을 때의 빈이 아닌 ApplicationContext.getBean( )으로 얻어질 수 있다
→ 즉, Spring에서의 빈은 ApplicationContext가 만들어서 그 안에 담고 있는 객체
SampleController sampleController = new SampleContraoller();
-> Bean 객체 X
SampleController bean = applicationContext.getBean(SampleController.class);
-> Bean 객체 O
- Spring IoC에 의해 인스턴스화, 관리, 생성
- Bean Container 는 의존성 주입을 통해 Bean객체를 사용할 수 있도록 해줌
- Spring에서 Bean은 Singleton으로 존재
*Singleton : 어떤 Class가 최초 한번만 메모리 할당하고, 그 메모리에 객체를 만들어 사용하는 디자인 패턴
Spring Bean Life Cycle
빈 생명주기 콜백의 필요성
- 객체 생성 → 의존성 주입 이라는 라이프 사이클을 가지는데,
- 스프링 빈은 의존관계 주입이 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됨
- 생명주기
더보기
Spring IoC 컨테이너 생성 → Spring Bean 생성 → 의존관계 주입 → 초기화 콜백 메소드 호출 → 사용 → 소멸 전 콜백 메소드 호출 → 스프링 종료
순서1. Spring IoC 컨테이너가 만들어짐
순서2. Component-Scan으로 Bean 등록을 시작
Spring IoC 컨테이너에 Bean을 등록하는 방법
1. Component Scanning
- @ComponentScan, @Component 어노테이션 사용
- @Component, @Controller, @Service, @Repository 등 모두 찾아 Bean으로 등록해준다
- @ComponentScan : 어느 지점부터 Component를 찾으라고 알려주는 역할
- @Component : 실제 찾아서 Bean으로 등록할 Class의미
2. Configuration File에 직접 등록
- @Configuration 어노테이션을 이용하여 Configuration 역할을 하는 class 를 지정
- 해당 파일 하위에 @Bean을 사용하여 등록하고자 하는 class를 bean으로 등록
@Configuration
public class SampleConfiguration{
@Bean
public SampleController sampleController() {
return new SampleController;
}
}
♦ References
https://velog.io/@ssoyeong/Spring-Spring-Bean%EC%9D%B4%EB%9E%80
https://dev-coco.tistory.com/170?category=1009530
'Java' 카테고리의 다른 글
[Spring] Spring의 대표적인 Annotation 정리 (0) | 2022.04.20 |
---|---|
[Spring] VO, DTO, Entity (0) | 2022.04.20 |
[Spring] 의존성 주입(DI) 과 제어의 역전 (IoC) (0) | 2022.04.16 |
[Spring] STS 4 설치하기 (0) | 2022.04.02 |
GetMapping, PostMapping (0) | 2021.08.13 |
댓글