스프링 컨테이너
Spring 컨테이너는 Spring 애플리케이션의 핵심 구성 요소인 빈(Bean) 객체들을 생성, 구성, 그리고 소멸에 이르는 전반적인 생명주기를 관리하는 역할을 담당하며, 이를 통해 개발자는 빈의 생성 및 의존성 관리에 대한 부담을 덜고 핵심 비즈니스 로직 개발에 집중할 수 있도록 개발 프로세스를 단순화합니다.
Spring 컨테이너는 크게 BeanFactory와 ApplicationContext의 두 가지 유형으로 분류할 수 있습니다.
BeanFactory
- BeanFactory은 스프링 컨테이너의 최상위 인터페이스
- Spring 애플리케이션에서 Bean을 관리하고 조회하는 역할 .
ApplicationContext
- ApplicationContext는 BeanFactory 인터페이스의 확장
- BeanFactory의 모든 기능을 상속받고 추가 기능을 제공한다
- 일반적으로 많은 기능과 편의성 때문에 ApplicationContext를 주로 사용한다
- ApplicationContext가 제공하는 추가 기능에는 메시지 소스를 사용한 국제화 기능, 환경 변수 처리, 애플리케이션 이벤트 및 리소스 조회가 포함된다
정리
BeanFactory이 Bean을 관리하고 조회하는 역할을 하지만 ApplicationContext이 더 많은 기능을 제공하기 때문에 일반적으로 사용한다.
스프링 빈
스프링에서 생성하고 관리하는 자바 객체를 의미한다. 스프링 빈을 등록하는 방법은 자동 등록, 수동 등록이 있습니다.
1. 자동 등록
Spring 프레임워크에서 제공하는 @Service, @Repository, @Controller와 같은 어노테이션들은 모두 @Component 어노테이션을 포함하는 스테레오타입으로, @ComponentScan에 의해 자동으로 스캔되어 해당 클래스들을 Spring 컨테이너에 빈(Bean)으로 등록합니다.
2. 수동 등록
스프링 빈을 수동으로 등록하는 것은 @Configuration과 @Bean 어노테이션으로 가낭합니다.
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
자동, 수동의 올바른 실무 운영 기준
편리한 자동 기능을 기본으로 사용한다.
기술 발전과 함께 자동화를 선호하는 추세가 강해지는 가운데, Spring 프레임워크는 @Component 어노테이션뿐만 아니라 @Controller, @Service, @Repository와 같이 계층별 역할을 명확히 하는 어노테이션을 통해 애플리케이션 로직을 자동으로 스캔하고 빈으로 등록할 수 있도록 지원하며, 최근의 Spring Boot는 이러한 컴포넌트 스캔을 기본으로 활용할 뿐만 아니라 다양한 Spring 빈들을 특정 조건에 따라 자동으로 등록하도록 설계되어 개발 편의성을 극대화하고 있습니다.
수동 빈 등록은 언제 사용하면 좋을까?
애플리케이션은 크게 업무 로직과 기술 지원 로직으로 나눌 수 있다.
- 업무 로직 빈: 웹을 지원하는 컨트롤러, 핵심 비즈니스 로직이 있는 서비스, 데이터 계층의 로직을 처리하는 리포지토리등이 모두 업무 로직이다. 보통 비즈니스 요구사항을 개발할 때 추가되거나 변경된다.
- 기술 지원 빈: 기술적인 문제나 공통 관심사(AOP)를 처리할 때 주로 사용된다. 데이터베이스 연결이나, 공통 로그처리 처럼 업무 로직을 지원하기 위한 하부 기술이나 공통 기술들이다.
'Spring' 카테고리의 다른 글
[Spring] 스프링이 제공하는 ExceptionResolver에 대하여 (0) | 2024.07.08 |
---|---|
[Spring] 스프링이 제공하는 HandlerExceptionResolver에 대해서(ExceptionHandlerExceptionResolver) (0) | 2024.07.04 |
[OAuth2.0 + JWT + Spring] 스프링 시큐리티로 OAuth2.0 로그인 구현(카카오) (0) | 2024.07.01 |
[spring] 의존관계 자동 주입 - 생성자 주입을 사용해야 되는 이유 (1) | 2024.03.24 |
[Spring] Spring 기본 개념 - 스프링 컨테이너 (1) | 2024.03.24 |