[Spring] 스프링 객체 관리 / 빈(Bean)

빈(Bean)이란 ?

- 스프링에서는 객체를 '빈'이라고 부른다.

- 빈은 애플리케이션의 핵심 구성 요소로, 스프링 컨테이너에 의해 생성, 관리된다.

- 스프링이 알아서 객체의 생명주기를 관리해줌으로써 사용자는 빈을 선언하고 사용하기만 하면 된다.

 

제어의 역전 (Inversion of Control, IoC)

- 스프링 프레임워크의 핵심 원칙 중 하나

- 개발자가 코드의 제어 흐름을 직접 관리하는 것이 아니라 프레임워크에게 제어 흐름의 일부 또는 전체를 위임하는 개념을 나타낸다.

 

빈의 생성 과정

- 주로 XML 또는 어노테이션을 이용해 빈을 정의하고, 스프링 컨테이너가 이를 스캔하고 인식한다.

- 빈의 생성은 BeanFactory또는ApplicationContext와 같은 스프링 IoC 컨테이너가 담당한다.

 

빈의 등록 과정

1. 컴포넌트 스캔(Component Scanning)은 스프링에서 빈을 자동으로 찾아 등록하는 기능

2. 설정 파일이나 어노테이션을 통해 개발자가 일일이 빈을 등록하지 않아도 됌

3. 빈이 생성되면 스프링은 의존성 주입(Dependency Injection)을 수행한다.

4. 스프링은 빈이 생성되고 의존성이 주입된 후에 빈의 초기화를 수행한다.

5. 빈은 스프링 IoC 컨테이너에 등록되고 , 필요한 곳에서 사용된다.

6. 애플리케이션의 종료 혹은 빈이 더 이상 필요하지 않을때, 스프링은 빈의 소멸을 수행한다.

 

컴포넌트 스캔 (Component Scan)

- 설정 파일이나 어노테이션을 통해 개발자가 일일이 빈을 등록하지 않아도 되게 해준다. (제어의 역전)

 

1. Component 어노테이션 부착

컴포넌트 스캔은 주로 @Component 어노테이션을 기반으로 동작한다.

따라서 스프링은 해당 어노테이션이 부착된 클래스들을 검색하여 빈으로 등록한다.

 

2. 다양한 어노테이션 활용

@Component 외에도 스프링은 다양한 레이어에서 사용되는 특별한 의미를 가진 어노테이션들을 제공
예를 들어, @Repository, @Service, @Controller 등이 있다.
각 어노테이션은 특정 레이어의 빈으로 등록되며, 컴포넌트 스캔이 이들을 자동으로 찾아서 등록한다.

 

 3.@Autowired를 활용한 자동 의존성 주입

컴포넌트 스캔은 빈을 등록하는 것뿐만 아니라, 의존성 주입도 자동으로 처리한다.

따라서 @Autowired 어노테이션을 사용하여 필요한 의존성을 주입받을 수 있다.

'Spring' 카테고리의 다른 글

[Spring] @OneToMany 와 @ManyToOne  (0) 2023.12.21
[Spring] Entity  (0) 2023.12.21
[Spring] Layered Architecture  (1) 2023.12.20
[Spring] MVC 웹 프레임워크  (1) 2023.12.20
[Spring] DI (Dependency Injection) / 의존성 주입  (0) 2023.12.20