Spring 핵심 구성요소 분석
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 뼈대 프레임워크를 구성하는 세 가지 핵심 구성 요소와 이들 간의 연결을 요약하고, 세 가지 구현 원리에 대한 이해에 대한 통찰력을 제공합니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

Spring Boot는 강력하고 확장 가능하며 생산 가능한 Java 응용 프로그램의 생성을 단순화하여 Java 개발에 혁명을 일으킨다. Spring Ecosystem에 내재 된 "구성에 대한 협약"접근 방식은 수동 설정, Allo를 최소화합니다.
