Spring Framework

김민석·2023년 10월 10일
0

Library란?

  • 라이브러리란 개발자가 만든 클래스들의 나열로, 다른 프로그램들에서 사용할 수 있도록 제공하는 방식이다.

Framework란?

  • 개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가 시키기 위해 일련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공되는 것을 말한다.
  • 제어의 역전 개념이 적용된 대표적인 기술이다.

Framework의 특징

  • 개발자가 따라야 하는 가이드를 제공한다.
  • 개발할 수 있는 범위가 정해져 있다.
  • 개발자를 위한 다양한 도구, 플러그인들을 지원한다.

장점

  • 개발 시간을 줄일 수 있음
  • 정형화 되어 있어 일정 수준 이상의 품질을 기대할 수 있음
  • 유지 보수가 쉬움

단점

  • 너무 의존하면 개발자들의 능력이 떨어져서 스스로 직접 개발하는 것이 어려워짐
  • 습득에 걸리는 시간이 오래 걸림

Framework의 종류

  • 영속성 Framework
    데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정
    파일들을 라이브러리화하여 구현한 프레임워크
    (Mybatis, Hibernate)

  • 자바 Framework
    Java EE를 통한 웹 어플리케이션 개발에 초점을 맞추어
    필요한 요소들을 모듈화 하여 제공하는 프레임워크
    (Spring Framework, Struts, 전자정부표준 - Spring)

  • 화면 구현 Framework
    Front-End를 보다 쉽게 구현할 수 있게 틀을
    제공하는 프레임워크
    (Bootstrap, Foundation, MDL)

  • 기능 및 지원 Framework
    특정 기능이나 업무 수행에 도움을 줄 수 있는 기능을
    제공하는 프레임워크
    (Log4j, JUnit 5, ANT)

Spring Framework 개요

Spring Framework란?

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 간단하게 스프링(Spring)이라고도 불린다.
동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있으며
대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는
전자정부 표준 프레임워크(Spring MVC Project 기반 프레임워크)의 기반 기술로서 쓰이고 있다.

Spring Framework의 특징

  • IOC (Inversion of Control) 제어 반전
    컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다는 뜻으로
    객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하고 있다.
    객체를 생성하고, 직접 호출하는 프로그램이 아니라, 만들어둔 자원을 호출해서
    사용한다.

  • DI (Dependency Injection) 의존성 주입
    설정 파일이나 어노테이션을 통해 객체간의 의존 관계를 설정하여
    개발자가 직접 의존하는 객체를 생성할 필요가 없다.

  • POJO 기반 프레임워크 (Plain Old Java Object)
    J2EE, EJB와 같은 특정 기술이나 라이브러리의 내용을 상속받아 클래스를 구현하
    지 않고 일반적인 기본 기능만을 가진 순수한 자바 객체를 의미한다.
    특정 클래스에 종속되지 않으므로 자바의 객체지향적 설계가 쉬워지고,
    코드길이 감소, 유지보수성 증가, 기존 Java API, 라이브러리 지원에 용이하다.

  • Spring AOP (Aspect Oriented Programming) 관점 지향 프로그래밍
    트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요로 하는
    기능의 경우 해당 기능들을 분리하여 관리한다.

  • Spring JDBC
    Mybatis나 Hibernate 등의 데이터베이스를 처리하는 영속성 프레임워크와
    연결할 수 있는 인터페이스를 제공한다.

  • Spring MVC
    MVC 디자인 패턴을 통해 웹 어플리케이션의 Model, View, Controller 사이의 의
    존 관계를 DI 컨테이너에서 관리하여 개발자가 아닌 서버가 객체들을
    관리하는 웹 애플리케이션을 구축 할 수 있다.

  • PSA (Portable Service Abstraction)
    스프링은 다른 여러 모듈을 사용함에 있어 별도의 추상화 레이어를 제공한다. 예
    를 들어 JPA를 사용할 때에서 Spring JPA를 사용하여 추상화하므로 실제 구현에
    있어서 Hibernate를 사용하든 EclipseLink를 사용하든 개발자는
    이 모듈의 의존 없이 프로그램에 집중할 수 있다.

Spring의 구성 모듈

  • Data 접근 계층
    JDBC나 데이터베이스에 연결하는 모듈로, Data 트랜잭션에 해당하는 기능을 담당하여
    영속성 프레임워크의 연결을 담당한다.

  • Web 계층 (MVC / Remoting)
    Spring Framework에서 Servlet등의 웹 구현 기술과의 연결점을
    Spring MVC 구성으로 지원하기 위해 제공되는 모듈 계층이다.
    또한 스프링의 리모팅 기술로 RMI, Hessian, Burlap, JAX-WS, HTTP 호출자 그리고 REST API 모듈을 제공
    한다.

  • AOP 계층
    Spring에서 각 흐름 간 공통된 코드를 한 쪽으로 빼내어 필요한 시점에 해당 코드를 첨부하게 하기 위해
    지원하는 계층으로, 별도의 proxy를 두어 동작한다. 이를 통해 객체간의 결합도를 낮출 수 있다.

  • Core Container
    Spring의 핵심 부분이라고 할 수 있으며 모든 스프링 관련 모듈은 이 Core Container 기반으로 구축된다.
    Spring의 근간이 되는 IOC 기능을 지원하는 영역을 담당하고 있다.
    BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원한다.

Spring 모듈 정리

  • spring-beans
    스프링 컨테이너를 이용해서 객체를 생성하는 기본기능을 제공

  • spring-context
    객체생성, 라이프 사이클 처리, 스키마 확장 등의 기능을 제공

  • spring-aop
    AOP 기능을 제공

  • spring-web
    REST 클라이언트 데이터 변환 처리, 서블릿 필터, 파일 업로드 지원 등
    웹 개발에 필요한 기반 기능을 제공

  • spring-webmvc
    스프링 기반의 MVC 프레임워크, 웹 애플리케이션을 개발하는데
    필요한 컨트롤러, 뷰 구현을 제공

  • spring-websocket
    스프링 MVC에서 웹 소켓 연동을 처리할 수 있도록 제공

  • spring-oxm
    XML과 자바 객체간의 매핑을 처리하기 위한 API 제공

  • spring-tx
    트랜잭션 처리를 위한 추상 레이어를 제공

  • spring-jdbc
    JDBC 프로그래밍을 보다 쉽게 할 수 있는 템플릿 제공

  • spring-orm
    Hibernate, JPA, Mybatis 등과의 연동을 지원

  • spring-jms
    JMS 서버와 메시지를 쉽게 주고 받을 수 있도록 하기 위한 템플릿

  • spring-context-support
    스케쥴링, 메일발송, 캐시연동, 벨로시티 등 부가 기능을 제공

0개의 댓글