본문 바로가기
Spring

Spring에서 모듈(컨테이너)

by chief_sac 2021. 4. 24.
반응형

SpringModule

Spring.io 공식사이트

Spring Overview

코끼리를 냉장고에 넣는방법 블로그

Core Container(코어 스프링)

스프링 프레임 워크의 핵심은 Bean의 생명 주기와 설정 그리고 처리방법을 관리하는 코어 컨테이너이다. 모든 스프링 모듈의 기반이 된다


  • Core and Beans
    • Spring 프레임 워크의 근간이 되는 IOC/DI기능을 지원하는 담당을 하고 있다.
    • BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원한다.
    • Core는 스프링에서 사용하는 핵심모듈이며 주요 어노테이션, 컨버터, 상수, 유틸리티 클래스 등을 제공합니다.
    • Beans는 스프링 DI기능의 핵심인 bean Factory와 DI기능을 제공하는 모듈이다 bean의 meta data, bean리더, beanFactory의 구현과 Properti aditor가 포함되어있다
  • Context
    • Core and Beans를 견고히(solid)한 모듈이다. JNDI처럼, 프레임 워크 방식이고 객체에 접근하기 위한 방법을 제공한다
    • Beans모듈에 더하여 국제화, 이벤트 전판, 리소스 로딩, 투명한 Context 생성 등을 제공한다
    • 대부분의 기능을 담고 있는데 bean스캐너 자바 코드 설정 기능, EJB지원, 포 메터, 로드 타임, 위빙, 표현식, JMX JNDI, 리모팅, 스케쥴링, 스크립트 언어 지원, 검증기 등
  • ExPression Language(SqEL)
    • 객체 탐색을 실행 시에 구하거나(querying) 조작할 수 있도록 강력한 표현 언어를 제공한다.(SpringEL/SpEL)
    • 객체 속성에 대한 읽기 및 설정, 메서드 호출, 배열에 접근, Collection and indexrs, 논리 및 수리 연산, named variables, Spring의 IOC container로부터 이름에 의한 객체 검색 등 제공
    • 필수 라이브러리 - Core

IOC(DI) 컨테이너

AOP and Instrumentation

AOP(Aspect Oriented Programming)
: 스프링은 AOP모듈을 통해 관점 지향 프로그래밍을 풍부하게 지원하고 객체 간의 결합력을 낮추게 도와줄 수 있다. Method-interceptors, pointcuts을 이용하여 분리 작성할 수 있다

Instrumentation
: 스프링의 인스트루 먼테이션 모듈은 JVM에 에이전트를 추가하는 기능을 제공 그리고 정확히는 톰캣용 위빙 에이전트(weaving agent)를 제공, 톰캣은 클래스 로더 되는 클래스 파일을 변환한다.


Data Access / Integration

JDBC , ORM , 트랜잭션 등 서비스 추상화를 이용해 쉽게 데이터에 접근하는 방법을 제공합니다.


  • JDBC : JDBC 기반하의 DAO 개발을 좀 더 쉽고 , 일관된 방법으로 개발하는 것이 가능하도록 추상화된 레이어를 제공한다
  • ORM : Object Relation Mapping 프레임워크인 Hibernate, iBatis, JDO, JPA와의 통합을 지원한다. 내부적으로는 JDBC를 사용한다.
  • OXM : Object/XML Mapping 은 Object와 XML 간의 변환을 위한 추상 계층을 제공한다. (JAXB, Castor, XMLBeans,
    JiBX, XStream 등)
  • JMS : Java Message Service , 메시징 처리를 위한 모듈을 제공.
  • Transaction : 스프링의 데이터에 직접적인 트랜잭션 관리, 선언적인 트랜잭션 관리에 있어 일관된 추상화를 제공하고 DataAcssessException 예외 계층 구조와 트랜잭션 동기화 저장소 JCA기능을 제공하거나 포함한다

Web과 리모팅

스프링은 다양한 MVC프레임워크랑 같이 사용 가능하지만 자체적으로도 Spring 모듈이 만들어져 있고 리포팅 기술에서는 HTTP호출자나 REST API 모듈을 제공하기도 한다


  • Web
    • 기본적인 웹 기반을 위한 공통적 기능을 제공 및 정의한 모듈
    • 다중 FileUpload처리, 리스너와 웹 기반으로 하는 application context를 위한 IOC컨테이너의 초기화를 제공한다
  • Web-Servlet
    • 웹 어플리 케이션 구현을 위한 Spring MVC를 제공 전통적인 MVC와 @MVC기능을 모두 포함하고 있다
    • Struts, WebSocket과 같은 프레임 워크의 통합을 지원한다
  • Web-WebSocket
    • JSR-356 스펙에 따라 구현된 WebSocket프로그래밍을 지원하는 모듈
  • Web-Portlet
    • 포털 기반의 MVC 구현을 위한 모듈을 제공

Messaging

Spring-Integration 모듈에서 Message, MessageChannel, MessageHandler 등 endpoint에서 메시지 매핑을 지원하는 API 들을 스프링 기본 모듈로 이관했다

TEST

JUnit이나 TestNG와 같이 Spring Components를 테스팅 하는 모듈 테스트용이기 때문에 운영 중에 사용되지 않는다, MockObject를 통하여 독립된 환경에서 테스트할 수 있다.

모듈 간 의존관계

반응형

'Spring' 카테고리의 다른 글

VO와 DTO란(VO vs DTO 차이)  (0) 2021.07.25
Reactive Stream 리액티브 스트림이란.  (0) 2021.07.10
Batch Job(일괄처리프로그램)  (0) 2021.07.01
Spring Websocket  (0) 2021.05.29
IOC(DI)컨테이너  (0) 2021.05.29