Spring 핵심 구성 요소
Spring에는 많은 핵심 구성 요소가 있지만 그 뼈대는 Core, Context 및 Bean입니다.
빈
셋 중에 빈이 핵심이다. Bean은 구성 파일을 통해 객체를 구현하고 Spring은 객체 저장 공간과 수명주기 할당을 관리합니다. 종속성 주입을 통해 개체를 지정된 비즈니스 논리 클래스에 주입할 수 있습니다. 이러한 주입 관계는 Ioc 컨테이너에 의해 관리됩니다.
따라서 Spring의 핵심 아이디어를 흔히 BOP(Bean Oriented 프로그래밍), 즉 Bean 지향 프로그래밍이라고 부릅니다.
Bean 컴포넌트는 Spring의 org.springframework.beans 패키지에 정의되어 있으며 다음 문제를 해결합니다.
Bean 정의
Bean 생성
Bean 파싱
사용자는 Bean 생성에만 주의하면 되고 나머지 두 프로세스는 Spring에 의해 내부적으로 완료됩니다.
1. 전체 아키텍처
Spring Bean의 전체 아키텍처는 일반적인 팩토리 모델이며, 최상위 인터페이스는 BeanFactory입니다. ListableBeanFactory, HierarchicalBeanFactory 및 AutowireCapableBean은 Spring의 내부 객체 처리 및 변환의 데이터 제한을 구별하기 위한 하위 클래스입니다.
ListableBeanFactory: 이러한 Bean이 나열 가능함을 나타냅니다.
HierarchicalBeanFactory: 이러한 Bean이 상속 관계를 가지고 있음을 나타냅니다.
AutowireCapableBeanFactory: Bean의 자동 어셈블리 규칙을 정의합니다
This 여러 인터페이스는 각각 Bean 컬렉션, Bean 관계 및 Bean 동작을 정의합니다.
2.Bean 정의
Bean 정의는 주로 BeanDefinition으로 기술하며, 계층적 관계는 다음과 같다.
Spring의 구성 파일 노드는 성공적인 구문 분석 후 BeanDefinition 객체로 변환되고 모든 후속 작업은 BeanDefinition 객체에서 수행됩니다.
3.Bean 파싱
Bean 파싱의 주요 작업은 Spring 구성 파일을 파싱하고 최종적으로 BeanDefinition 객체를 생성하는 것입니다.
구성 파일의 모든 태그를 포함하여 구문 분석 프로세스는 매우 복잡합니다. 주요 참여 클래스는 다음과 같습니다.
Context
Bean은 각 Object를 래핑하고, Object는 비즈니스에서 요구하는 데이터를 저장합니다. 따라서 이러한 데이터와 이들 사이의 관계에 대한 생존 및 운영 환경을 어떻게 제공할 것인가(즉, 객체의 상태를 저장하는 것)가 Context가 해결해야 할 문제이다. 컨텍스트는 실제로 Ioc 컨테이너라고도 하는 Bean 관계의 모음입니다.
ApplicationContext는 Context의 최상위 인터페이스이다. 계층적 관계는 다음과 같다.
ApplicationContext는 애플리케이션 환경의 기본 정보를 식별할 수 있다. Context의 기능을 확장하기 위해 5개의 인터페이스를 상속받았는데, 그 중 BeanFactory를 사용하여 Bean을 생성하고, 외부 리소스에 접근하기 위해 ResourceLoader 인터페이스를 상속합니다.
ApplicationContext의 하위 클래스는 주로 다음을 포함합니다.
ConfigurableApplicationContext: 사용자가 동적으로 정보를 구성하고 수정할 수 있는 컨텍스트이며, 그중 AbstractRefreshableApplicationContext가 가장 일반적으로 사용됩니다.
WebApplicationContext:
ServletContext에 직접 액세스할 수 있는 웹 애플리케이션용으로 준비된 컨텍스트입니다.
간단히 ApplicationContext가 완성해야 하는 기능은 다음과 같다.
애플리케이션 환경 식별
BeanFactory를 사용하여 Bean 객체 생성
객체 저장 관계 테이블
다양한 이벤트 캡처
Ioc 컨테이너로서 Context는 Spring의 다른 대부분 기능의 기초입니다.
Core
Spring은 Core라고 불리는 Bean 간의 관계를 발견, 설정 및 유지하기 위한 도구 패키지입니다. 이것은 실제로 필요한 Util입니다.
Core의 중요한 구성요소 중 하나는 Resource입니다.
1. 전반적인 리소스 수준
리소스는 주로 리소스에 액세스하는 방법을 정의합니다. 모든 리소스는 리소스 인터페이스로 추상화됩니다.
리소스 패키징. Resource는 위쪽으로 InputStreamSource 인터페이스를 상속하고, 모든 리소스는 InputStream을 통해 획득되므로 리소스 공급자를 보호합니다.
리소스 로딩. Resource 아래의 ResourceLoader 인터페이스는 모든 리소스 로더가 이전 ApplicationContext와 같이 이 인터페이스를 균일하게 구현하여 모든 리소스를 로드할 수 있습니다.
2. Context와 관계 설정
그림에 표시된 것처럼 ApplicationContext는 ResourcePatternResolver 인터페이스를 통해 ResourceLoader와 상호 작용하여 리소스를 로드, 구문 분석 및 설명합니다. ResourcePatternResolver는 리소스를 캡슐화하고 통합하여 다른 구성 요소에서 쉽게 사용할 수 있도록 합니다.
요약
이 글은 주로 Spring 뼈대 프레임워크를 구성하는 세 가지 핵심 구성 요소와 이들 간의 연결을 요약하고, 세 가지 구현 원리에 대한 이해에 대한 통찰력을 제공합니다.