Spring/Spring Legacy

Spring Framework

생각없이 해도 생각보다 좋다. 2023. 6. 19. 15:34

Spring framework

  • Enterprise application에서 필요로 하는 기능을 제공하는 프레임워크
  • Enterprise application
    • 원격의 환경에서 네트워크로 활용하는 어플리케이션
    • web이라고 봐도 무방하다.
  • JEE가 제공하는 다수의 기능을 지원하는 경량화 프레임워크
    • 이전에 쓰던 프레임워크의 모든 기능을 종합적으로 사용하면서 경량화 된 솔루션
    • JEE의 기능 + DI + AOP
    • JEE: Java Enterprise Edition
    • DI: Dependency Injection
    • AOP: Aspect Oriented Programming

Spring framework의 목표

  • java enterprise applicaion의 기반(infro) 제공하는 것.
  • 그로인해 개발자는 domain problem(핵심 문제)에만 집중할 수 있게 도와주는 것이 목표

Spring의 특징

  • 경량컨테이너
  • DI 패턴 지원
  • AOP 지원
  • POJO 지원
  • IoC 제공
  • 트랜잭션 처리를 위한 일관된 방법 제공
  • 영속성 관련 API 지원
  • 다양한 API를 연동할 수 있는 기능 지원

Spring Framework 구성 요소

  • Spring Core
  • Spring Context : Spring Core에 추가 버젼
  • Spring AOP
  • Spring DAO : DB관련
  • Spring ORM : DB관련
  • Spring Web : Web관련
  • Spring Web MVC : Web관련

Spring Core, Context

  • Spring core
    • IoC(혹은 DI) 기능을 지원하는 영역
    • Bean Container
  • Srping context

DI, Dependency Injection

  • 객체 사이의 의존 관계가 객체가 아닌 외부에 의해서 설정
  • A를 사용하기 위해서 B가 필요하다면 A는 B에 의존한다고 표현

IoC

  • 자바 객체 생성/ 객체간의 의존관계 설정이 개발자가 주체가 아닌 컨테이너에게 주체를 넘긴것
  • 제어의 역전
    • 필요한 객체를 자신이 직접 생성하지 않고 외부(spring container)로부터 공급 받는 일

용어 설명

  • Container : 객체 생성 기능
  • dependency : 작업할 때 필요한 library
  • 결합도
    • 클래스간의 결합도
    • 낮을수록 좋음
  • 응집도
    • 하나의 클래스 내에서의 얘기
    • 클래스가 본래 목적에 맞게 모두 만들어져있는가

추가 설명

Spring Framework Triangle

image

경량컨테이너

  • 스프링에서 자바 객체를 담고, 자바 객체들의 라이프사이클을 관리하는 컨테이너를 의미한다.
  • 스프링 컨테이너라고 한다.

DI; Dependency Injection

  • 의존성 주입
  • 유연하게 확장 가능한 객체를 만들고 이를 의존관계로 엮어 사용하는 것
  • 스프링은 설정 파일이나, 어노테이션을 통해 객체 간 의존 관계를 설정할 수 있음.
  • 의존 관계로 설정된 객체는 직접 생성하거나 검색할 필요가 없다.

AOP; Aspect Oriented Programming

  • 관점 지향 프로그래밍
  • 관심사의 분리를 통해서 소프트웨어의 모듈성 향상
  • 핵심 관심사와 공통 관심사 분리

POJO; Plain Old Java Object

  • 특정 환경이나 기술에 종속적이나 않은 객체지향 원리에 충실한 자바 객체
  • 테스트하기 용이하고 객체지향 설계를 자유롭게 적용할 수 있음.
  • Plain: 특정 framework에 종속되지 않는 것을 의미
  • Old: EJB 이전의 java class를 의미
  • 인터페이스를 구현하거나 클래스를 상속 받지 않는 일반 자바 객체를 의미하고, 스프링이 이를 지원함

IoC; Inversion of Control

  • 제어의 반전, Spring의 핵심 기능
  • 자바 객체 생성 및 의존관계 설정에 대한 제어권을 개발자가 아닌 프레임워크에게 넘기는 것을 의미
  • Spring Framework에서는 Spring Container가 자바 객체 생성 및 의존관계 설정에 대한 제어권을 갖고 있음.

PSA; Portable Service Abstraction

  • 환경과 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계 원칙
  • low level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리. 즉, 환경과 세부기술이 변경되더라도 사용하는 인터페이스는 그대로이므로 사용 방식에는 변동이 없다.

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

DI & AOP  (0) 2023.06.21