Spring5 소스 코드 분석 (1) 설계 및 건설

1
(중국어 노트) 자료 주소 [email protected] : yakax / 스프링 프레임 워크 5.0.2.RELEASE - 자식.

봄은 사실 우리의 개발을 단순화하도록 설계

  1. POJO의 경량 및 최소 침습 프로그래밍;
  2. 의존성 삽입 느슨하게는 인터페이스에 결합;
  3. 선언적 프로그래밍에 따라 제 및 관성;
  4. 잘라 내기 및 템플릿을 통해 상용구 코드를 줄;

콩 (BOP)에 대해,이 세 가지 방법의 의존성 주입 (DI)와 aspect 지향 (AOP)을 달성하기 위해 : 그리고 그는 주로 통해서였다.

콩 지향

  • 봄은 콩 지향 프로그래밍 (콩 지향 프로그래밍, BOP)이며, 콩 봄의 진짜 주인공이다.
  • IOC (대조군은 반전)하는 가장 일반적인 방법은 제어 반전에서 DI (DI)에 의해 달성되는 제어 반전은 또한 직접 스프링 의존성 주입 함.

    이른 봄 DL (종속 조회), 낮은 주파수의 사용에 의한 이상을 제거하고있다.

의존성 주입의 기본 개념 (DI)의

봄 디자인의 핵심 된 org.springframework.beans 패키지 (코어 아키텍처는 org.springframework.core이다
가 자바 빈즈 컴포넌트와 함께 사용하도록 설계, 패키지). 이 패키지는 일반적으로 사용자가 직접 사용되지 않지만 서버에 의해
기본 인터 포저 대부분의 다른 기능으로 사용합니다. 추상화의 다음으로 높은 수준이 공장 디자인 패턴의 실현, BeanFactory에 인터페이스입니다,
그것은 만들고 이름으로 객체를 검색 할 수 있습니다. 객체 사이의 BeanFactory 관계도 관리 할 수 있습니다.
BeanFactory에 두 개의 낮은 수준의 개체 모델을 지원합니다.

  1. 싱글 예 : 그것은 쿼리에서 검색 할 수있는 특정 이름의 객체의 글로벌 공유 인스턴스를 제공합니다. 싱글이 기본입니다
    확인하고 가장 일반적인 객체 모델.
  2. 프로토 타입 : 각 검색 개체의 별도의 인스턴스를 생성 할 수 있도록. 때 각 사용자는 프로토 타입 모델을 사용하여, 자신의 객체를 필요로한다.
    개념은 IOC 컨테이너에 대한 근거로 봄 콩을 심는 것입니다. IOC는 일을 처리하는 것은으로 응용 프로그램 코드에서 전송의 책임입니다
    프레임 워크.

AOP 프로그래밍 개념

관점 지향 프로그래밍, 즉, AOP, 그것은 프로그래머 크로스 커팅 문제를 실시 또는 모듈 (로깅 및 트랜잭션 관리 등의) 일반적인 업무의 경계를 횡단 할 수 있도록, 프로그래밍 아이디어이다. 코어 구조를 재사용 가능한 모듈들의 복수의 클래스들로 이러한 패키지의 동작에 영향을 미칠 것이다 AOP (부)의 형태이며, AOP 기능 완전히 Spring 트랜잭션 관리 상황 기록 및 기타 다양한 특성에 통합된다.

Spring5 시스템 아키텍처

핵심 용기
  • 스프링 코어 和 봄 콩

    컨트롤의 반전을 포함하는 스프링 프레임 워크의 핵심 모듈 (반전 ofControl, IOC) 및 의존성 주입 (의존성 주입, DI). 의 BeanFactory 인터페이스는 공장 모델에서 구현되는 Spring 프레임 워크의 핵심에 대한 인터페이스입니다. 제어 및 애플리케이션 의존 명세서 및 실제 응용 프로그램 코드를 사용하여 구성되는 BeanFactory 역전 분리 하였다. 그러나 자동으로 Bean을 인스턴스화하지 않는 인스턴스의 BeanFactory 컨테이너는 의존성을 인스턴스화합니다 콩의 BeanFactory 컨테이너가 콩으로 조립 된 경우에만 사용됩니다.

  • 스프링 문맥

    핵심 모듈의 상단, 그는 그녀를 위해 콩 수명주기 제어, 시스템 이벤트 프레임 워크와 투명 자원로드 및 기타 기능을 추가 BeanFactory를 확장합니다. 또한, 모듈은 또한 그녀가 BeanFactory에 슈퍼 클래스이며, 기업 수준의 지원의 번호, 전자 메일 액세스, 원격 액세스, 작업 스케줄링, ApplicationContext를 모듈의 핵심 인터페이스가 제공
    되는 ApplicationContext 컨테이너가 모두 자동으로 인스턴스화 한 후, BeanFactory에의 다른 모노 - 및 콩의 예는 조립체 의존성을 인스턴스화 있도록 대기 상태에있다.

  • 스프링 컨텍스트 지원

    봄 IOC 컨테이너와 컨테이너 IOC의 자녀에 대한 확장 된 지원을 제공합니다.

  • 스프링 상황 인덱서

    봄 클래스 관리 구성 요소 및 클래스 패스 스캔.

  • 스프링 식

    통합 표현 언어 (EL) 확장 모듈은 용이 객체 메소드는 그래서 배열 수집 및 조작을 호출 할 수도 오브젝트 관리 작업 질의 할 수 있지만. 그것의 구문은 기존의 EL과 유사하지만, 추가 기능, 함수 호출의 수와 간단한 문자열에 최선의 템플릿 기능을 제공합니다. 언어의 특성이 봄 제품 디자인의 필요에 따라, 그는 쉽게 상호 작용 봄 IOC에 있습니다.

AOP 및 장치 지원
  • 스프링 AOP

    봄은 또 다른 핵심 모듈, AOP가 주요 구현 모듈입니다. , OOP에 따라 프로그래머의 가장 큰 프로그래밍 아이디어 중 하나에 영향을 미치는 것처럼, AOP는 크게 프로그래밍을위한 사람들의 아이디어를 열었습니다. 봄, 그 JV 인 대형 컬럼  (1)의 디자인 및 구조 Spring5 소스 코드 분석 동적 에이전트 기술, 그러한 사전 통지 창 같은 크로스 커팅 AOP 구현 일련 설계 M에 기초 조언을 던진다 포인트 컷 인터페이스 매칭 엔트리 포인트가 기존의 포인트 컷 단면을 사용하여 설계 될 수있는 반면, 등, 절단 방법 연관된 필요에 따라 확장 될 수있다.

  • 스프링 양태

    AspectJ를 통합 프레임 워크 때문에, 주로 AOP 스프링 AOP 구현의 다양한 제공

  • 봄 악기

    JAVA SE는 "java.lang.instrument의"디자인을 기반으로, 모듈의 AOP 지원으로 간주되어야하며, 주요 역할은 JVM에서 사용 가능, 프록시 클래스, 클래스를 수정하는 런타임에 프록시 클래스에 의해 단어 프로그래머를 생성 섹션하여 클래스의 기능을 변화, AOP의 기능을 달성한다. 분류에서, 여기이 자리에 AOP 모듈 스프링 공식 문서에서 분에 약간 모호한 집어 넣어 순전히 개인적인 견해입니다.

데이터 액세스 및 통합
  • 스프링 JDBC

    간략화 작동 스프링, 스프링 JDBC 제공하는 메인 모듈 구현 JDBC 추상화 프레임 워크. 주요 방법은 JDBC 프로그래밍을 단순화하기 위해 JDBC 템플릿, 관계형 데이터베이스 객체 지향 방법, SimpleJdbc 방법, 트랜잭션 관리를 제공하기 위해, 주로 구현 클래스는 JdbcTemplate을, 인 SimpleJdbcTemplate와 NamedParameterJdbcTemplate이다입니다.

  • 봄-TX

    봄 JDBC 트랜잭션 제어 구현 모듈. 스프링 프레임 워크를 사용하여, 그것의 AOP 구성, 모든 수준에서 유연한 구성을 통해, 아주 좋은 패키지 업무를 수행하고있다, 그러나 많은 요구와 응용 프로그램에서 직접 JDBC 트랜잭션 컨트롤은 여전히 ​​장점이 있습니다. 사실, 기업이 비즈니스 로직 기반이다 비즈니스 계층의 방법은 전체 기업에 대응한다 비즈니스가 실패하면, 전체 트랜잭션 롤백되고 따라서 절대적 트랜잭션 제어가 서비스 계층에 배치되어야하고 있지만, 레이어 디자인은 매우 중요한 원칙을 따라야합니다 잔류성 : 자성 작업은 각 방법의 영속 계층이 분리되지 않아야 함을 확인합니다. 봄 JDBC 트랜잭션 제어를 사용하는 경우 따라서, 그것의 특수성에주의를 기울여야한다.

  • 봄 벌레

    ORM 프레임 워크 지원 모듈, 주요 통합 하이버 네이트, JPA (Java Persistence API)를 및 Java 데이터 자원 관리 (JDO)를 개체, 데이터 액세스 개체 (DAO) 구현 및 거래 전략.

  • 스프링 OXM

    주로지지 OXM에 추상화 계층을 제공하기 위해 (OXM은 개체 간 XML 매핑 약어이며, 이는 XML 데이터로의 O / M 매퍼 매핑 Java 오브젝트이거나, Java 오브젝트로 XML 데이터를 매핑하는) 예를 들어 : JAXB, 피마자, XML 빈스, JiBX는 및 XStream을 등등.

  • 스프링 JMS

    (자바 메시징 서비스) 전송 및 스프링 메시징 모듈의 스프링 프레임 워크 4.1에서 이후, 그는 또한 제공 지원 정보를받을 수 있습니다.

웹 구성 요소

- 봄 - 웹

봄은 또한 IOC를 초기화하거나 리스너 서블릿 컨테이너에 의해 주로 핵심 용기의 상단에 내장 가장 기본적인 웹 지원을 제공하는 일부 웹 관련 지원이 포함되어 있습니다.

  • 봄-webmvc 모듈이되는
    하나의 웹 서블릿 모듈로 알려진 스프링 MVC (모델 - 뷰 - 컨트롤러 ) 웹 애플리케이션. 스프링 웹 소켓 모듈은 주로 웹 프런트 엔드 전이중 통신 프로토콜이다.
  • 스프링 웹은
    비동기, 비 차단, 이벤트 중심의 서비스를 만드는 데 사용할 수있는 새로운 막힘 기능 반응성 웹 프레임 워크 및 확장 성이 매우 좋다
통신 报文
  • 스프링 메시징 모듈

    새로 추가 한 모듈에서 시작 Spring4, 주요 책임은 스프링 프레임 워크에 대한 몇 가지 기본적인 메시징 응용 프로그램을 통합하는 것이다.

    통합 테스트
  • 스프링 테스트

    응용 프로그램 서버에 (프로그램)을 해제하거나 다른 비즈니스 모든 비즈니스에 대한 몇 가지 통합 테스트 또는 다른 테스트를 수행 할 수있는 시설이 매우 중요하다 연결할 필요가 없습니다 결국 주요 테스트 케이스 지원을 제공합니다.

    호환 통합
  • 스프링 프레임 워크 BOM

    재료 명세서 (BOM). Spring의 의존성 모듈은 다른 문제의 다른 버전을 해결하기

각 모듈 다이어그램

봄 버전 명명 규칙

설명 방법 설명 의미
스냅 사진 스냅 샷 그것은, 안정되지 개발 버전에 아직
해제 안정된 기능, 외부 문제가 상대적으로 안정적이지만, 시간 제한이
GA 공식 버전 널리 사용되는 안정적인 버전의 대표 (일반 가용성)
마일스톤 버전 일부 버전은 새로운 기능이나 랜드 마크를 가지고있다 (M은 마일스톤 의미이다).
RC 최종 테스트 버전 곧 출시의 공식 버전으로, 후보 (최종 테스트)를 놓습니다.

추천

출처www.cnblogs.com/lijianming180/p/12046801.html