빈(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 어노테이션을 기반으로 동작한다.
따라서 스프링은 해당 어노테이션이 부착된 클래스들을 검색하여 빈으로 등록한다.
@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 |