스프링 컨테이너
스프링 프레임워크의 핵심 기능 중 하나로, 스프링 애플리케이션에서
객체의 생성, 관리, 의존성 주입(Dependecy Injection), 라이프사이클 관리 등을
담당하는 컴포넌트이다.
스프링 컨테이너는 빈(Bean)이라고 불리는 객체들을 관리한다.
빈은 스프링 컨테이너에 의해 생성되고, 컨테이너 안에서 싱글톤으로 관리된다.
싱글톤은 여러 요청이나 호출에 대해 동일한 인스턴스를 유지하는 디자인 패턴을 의미한다.
스프링 컨테이너는 XML, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다.
스프링 부트(Spring Boot)를 사용하기 전에는 XML을 통해 직접적으로 설정해 주어야 했지만,
스프링 부트가 등장하면서 대부분 사용하지 않게 되었다.
스프링 컨테이너의 장점
1. 의존성 주입
스프링 컨테이너는 빈들 사이의 의존성을 주입하는 역할을 수행한다.
이를 통해 객체들 간의 결합도를 낮추고 유연성과 테스트용이성을 높일 수 있다.
2. 라이프 사이클 관리
빈이 생성되고 초기화되는 시점, 빈이 소멸되는 시점에
특정 작업을 수행할 수 있도록 지원한다.
3. AOP(Aspect-Oriented Programming) 지원
스프링 컨테이너는 AOP를 지원하여, 핵심 비즈니스 로직과
공통 관심사(Cross-cutting Concerns)를 분리하여 모듈화 할 수 있도록 한다.
4. 설정의 외부화
스프링 컨테이너는 설정 정보를 XML, Java Config, Annotation 등을 통해 외부화할 수 있다.
이를 통해 애플리케이션의 설정을 변경하지 않고도 다양한 환경에서 실행할 수 있다.
스프링 컨테이너 종류
BeanFactory
- 스프링 컨테이너의 초상위 인터페이스
- 스프링 빈을 관리하고 조회하는 역하을 담당
- getBean() 메서드를 통해 빈을 인스턴스화할 수 있음
- @Bean 어노테이션이 붙은 메서드의 이름을 스프링 빈의 이름으로 사용하여 빈을 등록
ApplicationContext
- ApplicationContext는 빈 팩토리의 기능 모두 상속
- 빈을 관리하고 검색하는 기능은 BeanFactory가 제공하고, 그 외의 부가 기능을 제공한다.
ApplicationContext의 부가 기능
- MessageSource : 메시지 다국화를 위한 인터페이스
- EnvironmentCapable : 개발, 운영, 환경변수 등으로 나누어 처리하고, 애플리케이션 구동 시 필요한 정보들을 관리하기 위한 인터페이스
- ApplicationEventPublisher : 이벤트 관련 기능을 제공하는 인터페이스
- ResourceLoader : 파일, 클래스 패스, 외부 등 리소스를 편리하게 조회
내용 참고 - IT is True -
내용 참고 - rawfish의 개발공부.log -
내용 참고 - beststar -
'자바 탐구' 카테고리의 다른 글
스프링) RestClient (0) | 2023.07.25 |
---|---|
자바) List, Set, Map, HashMap의 특성 (0) | 2023.07.24 |
스프링) 의존성 주입(Dependency Injection) 방식 (0) | 2023.07.22 |
JPA) 영속성 컨텍스트 (0) | 2023.07.21 |
스프링) SpringSecurity - 11) Oauth2.0 네이버 로그인 완료 (0) | 2023.05.26 |