찾다
백엔드 개발파이썬 튜토리얼Spring 핵심 구성요소 분석
Spring 핵심 구성요소 분석Nov 02, 2016 pm 02:14 PM
java

Spring 핵심 구성 요소

Spring에는 많은 핵심 구성 요소가 있지만 그 뼈대는 Core, Context 및 Bean입니다.

셋 중에 빈이 핵심이다. Bean은 구성 파일을 통해 객체를 구현하고 Spring은 객체 저장 공간과 수명주기 할당을 관리합니다. 종속성 주입을 통해 개체를 지정된 비즈니스 논리 클래스에 주입할 수 있습니다. 이러한 주입 관계는 Ioc 컨테이너에 의해 관리됩니다.

따라서 Spring의 핵심 아이디어를 흔히 BOP(Bean Oriented 프로그래밍), 즉 Bean 지향 프로그래밍이라고 부릅니다.

Bean 컴포넌트는 Spring의 org.springframework.beans 패키지에 정의되어 있으며 다음 문제를 해결합니다.

Bean 정의

Bean 생성

Bean 파싱

사용자는 Bean 생성에만 주의하면 되고 나머지 두 프로세스는 Spring에 의해 내부적으로 완료됩니다.

Spring 핵심 구성요소 분석

1. 전체 아키텍처

Spring Bean의 전체 아키텍처는 일반적인 팩토리 모델이며, 최상위 인터페이스는 BeanFactory입니다. ListableBeanFactory, HierarchicalBeanFactory 및 AutowireCapableBean은 Spring의 내부 객체 처리 및 변환의 데이터 제한을 구별하기 위한 하위 클래스입니다.

ListableBeanFactory: 이러한 Bean이 나열 가능함을 나타냅니다.

HierarchicalBeanFactory: 이러한 Bean이 상속 관계를 가지고 있음을 나타냅니다.

AutowireCapableBeanFactory: Bean의 자동 어셈블리 규칙을 정의합니다

This 여러 인터페이스는 각각 Bean 컬렉션, Bean 관계 및 Bean 동작을 정의합니다.

2.Bean 정의

Bean 정의는 주로 BeanDefinition으로 기술하며, 계층적 관계는 다음과 같다.

Spring 핵심 구성요소 분석

Spring의 구성 파일 노드는 성공적인 구문 분석 후 BeanDefinition 객체로 변환되고 모든 후속 작업은 BeanDefinition 객체에서 수행됩니다.

3.Bean 파싱

Bean 파싱의 주요 작업은 Spring 구성 파일을 파싱하고 최종적으로 BeanDefinition 객체를 생성하는 것입니다.
구성 파일의 모든 태그를 포함하여 구문 분석 프로세스는 매우 복잡합니다. 주요 참여 클래스는 다음과 같습니다.

Spring 핵심 구성요소 분석

Context

Bean은 각 Object를 래핑하고, Object는 비즈니스에서 요구하는 데이터를 저장합니다. 따라서 이러한 데이터와 이들 사이의 관계에 대한 생존 및 운영 환경을 어떻게 제공할 것인가(즉, 객체의 상태를 저장하는 것)가 Context가 해결해야 할 문제이다. 컨텍스트는 실제로 Ioc 컨테이너라고도 하는 Bean 관계의 모음입니다.

ApplicationContext는 Context의 최상위 인터페이스이다. 계층적 관계는 다음과 같다.

Spring 핵심 구성요소 분석

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. 전반적인 리소스 수준

리소스는 주로 리소스에 액세스하는 방법을 정의합니다. 모든 리소스는 리소스 인터페이스로 추상화됩니다.

Spring 핵심 구성요소 분석

리소스 패키징. Resource는 위쪽으로 InputStreamSource 인터페이스를 상속하고, 모든 리소스는 InputStream을 통해 획득되므로 리소스 공급자를 보호합니다.

리소스 로딩. Resource 아래의 ResourceLoader 인터페이스는 모든 리소스 로더가 이전 ApplicationContext와 같이 이 인터페이스를 균일하게 구현하여 모든 리소스를 로드할 수 있습니다.

2. Context와 관계 설정

Spring 핵심 구성요소 분석

그림에 표시된 것처럼 ApplicationContext는 ResourcePatternResolver 인터페이스를 통해 ResourceLoader와 상호 작용하여 리소스를 로드, 구문 분석 및 설명합니다. ResourcePatternResolver는 리소스를 캡슐화하고 통합하여 다른 구성 요소에서 쉽게 사용할 수 있도록 합니다.

요약

이 글은 주로 Spring 뼈대 프레임워크를 구성하는 세 가지 핵심 구성 요소와 이들 간의 연결을 요약하고, 세 가지 구현 원리에 대한 이해에 대한 통찰력을 제공합니다.


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
带你搞懂Java结构化数据处理开源库SPL带你搞懂Java结构化数据处理开源库SPLMay 24, 2022 pm 01:34 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

Java集合框架之PriorityQueue优先级队列Java集合框架之PriorityQueue优先级队列Jun 09, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

完全掌握Java锁(图文解析)完全掌握Java锁(图文解析)Jun 14, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

一起聊聊Java多线程之线程安全问题一起聊聊Java多线程之线程安全问题Apr 21, 2022 pm 06:17 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

Java基础归纳之枚举Java基础归纳之枚举May 26, 2022 am 11:50 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

详细解析Java的this和super关键字详细解析Java的this和super关键字Apr 30, 2022 am 09:00 AM

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

Java数据结构之AVL树详解Java数据结构之AVL树详解Jun 01, 2022 am 11:39 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

一文掌握Java8新特性Stream流的概念和使用一文掌握Java8新特性Stream流的概念和使用Jun 23, 2022 pm 12:03 PM

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경