본문 바로가기

Study/Spring

[스프링 5.0 마스터] 스프링 모듈

2019/02/14 - [Study/Spring] - [스프링 5.0 마스터] 스프링 프레임워크란?


출처 : 스프링 5.0 마스터


다음 그림은 애플리케이션의 레이어 별로 그룹화된 스프링 모듈을 나타낸다.


코어(Core)

DI(Dependency Injection : 의존성 주입), IoC(Inversion of Control : 제어의 역전) 컨테이너 및 애플리케이션 콘텍스트의 핵심 기능을 제공한다.

  • Beans : 스프링 IoC 컨테이너에 의해 관리되며 애플리케이션의 핵심을 이루는 객체들을 스프링에서는 빈즈(Beans)라고 표현. 스프링 코어와 함께 스프링 프레임워크의 핵심 기능인 의존성 주입을 제공. 빈 팩토리(BeanFactory)의 구현을 포함한다.

  • Core : 스프링 모듈이 사용하는 유틸리티이다.

  • Context : 빈 팩토리를 상속하는 애플리케이션 콘텍스트를 구현하고 리소스 로드 및 국제화 지원한다.

  • SpEL : EL(JSP 표현 언어)을 확장하고 빈 속성 및 접근, 처리를 위한 언어 제공한다.


횡단관심(Crosscutting Concerns)



AOP(Aspect-Oriented Programming : 관점지향 프로그래밍)에서 핵심적인 기능이 아닌 모든 애플리케이션 레이어에 적용되어야 하는 기능(관심)을 횡단관심 이라고 표현한다.

시스템의 핵심 가치와 목적이 드러난 관심 영역을 핵심 관심이라고 표현한다. 핵심 관심은 기존의 객체지향 분석 및 설계를 통해 모듈화와 추상화가 가능하다.(출처 : https://winmargo.tistory.com/89)

  • AOP : 매서드 인터셉터와 포인트 컷을 사용해 관점지향 프로그래밍에 대한 기본적인 지원을 제공한다.
  • Aspect : 가장 인기 있고 완벽한 기능을 갖춘 AOP 프레임워크인 AspectJ와의 통합을 제공한다.
  • Instrumentation : 기본적인 인스트루멘테이션(instrumentation) 제공한다.


웹(Web)

스프링은 대중적인 웹 프레임워크와 통합을 제공하는 것 외에도 자체 MVC 프레임워크인 스프링 MVC 제공한다.

  • Servlet : 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 프로그램 혹은 그 사양이다. JSP는 HTML 문서 안에 Java 코드를 포함하고 있는 반면, 서블릿은 자바 코드안에 HTML을 포함하고 있다는 차이가 있다.(출처 : 위키백과)
  • Web Socket : ws 프로토콜을 기반으로 클라이언트와 서버 사이에 지속적인 양방향 연결 스트림을 만들어주는 기술이다.(출처 : MDN web docs)


비즈니스(Business)

스프링에서는 일반적으로 비즈니스 로직이 POJO(Plan Old Java Object)로 구현된다.

  • Transaction(트랜잭션) : POJO 및 다른 클래스에 대한 선언적 트랜잭션 관리를 제공한다.


데이터(Data)

데이터 레이어는 일반적으로 데이터베이스 또는 외부 인터페이스와 통신한다.

  • JDBC(Java DataBase Connectivity) : 수정하지 않거나 최소한의 수정을 거쳐 여러곳에 사용되는 상용구 코드를 방지하기 위해 JDBC를 추상화한다.(출처:위키백과)
  • ORM(Object-Relational Mapping) : ORM 프레임 워크, JPA, 하이버네이트 등과의 통합을 제공한다.(출처:https://asfirstalways.tistory.com/110)
  • OXM(Object XML Mapping : XML 매핑 통합 객체를 제공한다.
  • JMS(Java Message Service) : 상용구 코드를 방지하기 위해 JMS를 추상화한다.


'Study > Spring' 카테고리의 다른 글

[스프링 5.0 마스터] 스프링 프레임워크란?  (0) 2019.02.14
[스프링 5.0 마스터] 개요  (0) 2019.02.08