본문 바로가기
Java

[Spring] Spring Bean 이란?

by 준토리73 2022. 4. 18.

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://atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B9%88Bean%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%83%9D%EC%84%B1-%EC%9B%90%EB%A6%AC

 

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

댓글