Spring Framework란?

2019. 9. 2. 00:49Backend Develop

반응형
  • 프레임워크 : 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 (뼈대)
  • 라이브러리 : 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합 (부품)

스프링의 개념

 

자바 엔터프라이즈 개발을 편하게 해주는 경량급 오픈소스 애플리케이션 프레임워크

  • Lightweight Java Applicaion Framework

    목표 : POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 한다.
    Java Application을 개발하는데 필요한 하부구조(Infrastructure)를 포괄적으로 제공한다.
    Spring이 하부구조를 처리하기 때문에 개발자는 Application 개발에 집중할 수 있다.
  • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • 간단히 스프링 이라고도 불린다.
  • 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.
  • 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자 정부 표준 프레임워크의 기반 기술

POJO(Plain Old Java Object) : 상속과 인터페이스가 필요 없는 아주 단순하고 가벼운 객체를 의미

EJB(Enterprise JavaBeans) : 기업 환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델. 업무 로직을 가지고 있는 서버 애플리케이션으로 특정 환경에 종속적이고 무겁다.

 

Spring의 주요 특징

  1. DI(Dependency Injection)
    - 의존 관계 주입
    - 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 Spring이 서로 연결시켜준다.
    - POJO 객체들 사이의 의존 관계를 Spring이 알아서 연관성을 맺어준다.
    - 다양한 DB 사용 가능
  2. AOP(Aspect Orientated Programming)
    - 관점 중심 프로그래밍
    - Spring은 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 AOP를 지원한다.
    - 이를 통해 코드를 단순하고 깔끔하게 작성할 수 있다.
    - 횡단 관심을 수행하는 코드(Logging, Security, Transaction등)는 aspect라는 특별한 객체로 모듈화하고 weaving이라는 작업을 통해 모듈화 한 코드를 핵심 기능에 끼워 넣을 수 있다.
  3. Protable Service Abstraction
    - 이식 가능한 서비스 추상화
    - Spring은 완성도가 높은 라이브러리와 연결할 수 있는 인터페이스를 제공
    - 다른 프레임워크들과 통합을 지원

 

Spring의 구성 요소

 

Core Container 중 Bean Container는 POJO 객체를 관리한다.
Spring에서 제공하는 다양한 기능 중 필요한 것을 선택적으로 사용한다.

 

1. Spring Core : 스프링 프레임워크의 근간이 되는 요소. IoC기능을 지원하는 영역을 담당.
2. Spring Context : Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능외에 추가적인 기능들과 좀 더 쉬운 개발이 가능하도록 지원
3. Spring DAO : DAO 개발을 좀 더 쉽고 일관된 방법으로 개발하는 것이 가능하도록 지원.
4. Spring ORM : Object Relation Mapping 프레임워크와의 결합을 지원하기 위한 기능
5. Spring AOP : Spring 프레임워크에 Aspect Oriented Programming을 지원하는 기능.
6. Spring Web : Web Application 개발에 필요한 Web Application Context와 Multipart Request등의 기능을 지원
7. Spring Web MVC : Spring 프레임워크에서 독립적으로 Web UI Layer에 Model-View-Controller를 지원하기 위한 기능. 

반응형