Spring

Spring Framework란

차가운개발 2024. 9. 3. 14:47

 

 

스프링 프레임워크란 java 기반의 기업용 애플리케이션 개발을 위한 오픈 소스 프레임워크이다. 대규모 데이터 처리와 여러 사용자의 트랜잭션 처리에 중점을 두었다.

 

 

스프링 프레임워크의 가치

  • 단순함
    스프링은 EJB라는 표준 기술을 비판하며 등장했다. EJB는 불필요하게 복잡한 기술이었기 때문에 가장 단순하고 명쾌한 접근 방법을 제공하기 위해 등장했다. 객체지향 언어의 장점을 살릴 수 있는 도구이며, 가장 단순한 객체지향 개발 모델인 POJO(Plain Old Java Programming) 프로그래밍이다.
  • 유연성
    다양한 환경과 요구사항에 맞게 애플리케이션을 구성하고 확장할 수 있다.  

 

스프링 프레임워크의 특징

  • 경량 프레임워크
    스프링은 POJO 형태의 경량 프레임워크로 프레임워크의 크기와 메모리 사용량이 적어 빠른 성능을 제공한다.
    필요한 컴포넌트만 선택적으로 사용할 수 있어 불필요한 리소스를 최소화한다.
  • 제어의 역전(Inversion of Control, IoC)
    전통적인 프로그래밍 방식에서는 개발자가 객체를 생성하고 관리한다. IoC에서는 컨테이너가 객체의 생명주기를 관리하며 필요한 객체를 주입한다. 이로 인해 모듈 간의 결합도가 낮아지고, 코드의 유연성과 테스트 가능성이 향상된다.
  • 의존성 주입(Dependency Injection, DI)
    객체 간의 결합도를 낮추기 위해, 객체 생성과 관리의 제어를 프레임워크가 담당한다. 이를 통해 코드의 재사용성이 높아지고 유지보수가 용이해진다.
  • AOP지원(Aspect-Oriented Programming)
    스프링은 AOP를 통해 횡단 관심사(로깅, 트랜잭션, 관리, 보안 등)를 모듈화 할 수 있다. 비즈니스 로직에서 횡단 관심사를 분리하여 코드의 가독성과 유지보수성을 높일 수 있다.

 

스프링 프레임워크의 구조

ㅇ Core Container
서블릿의 생명주기를 담당하는 서블릿 컨테이너와 비슷하게 bean의 생성과 관리를 해누는 역할을 한다.

  • Spring Core
    core 모듈은 DI와 IoC 패턴을 적용할 수 있는 기본적인 스프링 프레임워크 클래스들을 포함하고 있다.
    어떤 타입의 스프링 애플리케이션을 빌드하든 직간접적으로 Spring Core에 대한 종속성을 가진다.
  • Spring Bean
    Bean 모듈은 모든 bean 객체들의 생명 주기를 관리한다. Spring Bean이 갖고 있는 Bean Factory는 bean 인스턴스를 생성하거나 bean의 의존성 문제를 해결하는 역할을 담당한다.
  • Spring Context
    Spring Context는 bean 객체들의 의존성 주입을 담당한다 대부분의 경우 애플리케이션이 실행될 때 Spring Context 모듈은 실행되며 Application Context라 불린다.
  • SpEL(Spring Expression Language)
    런타임동안 object graph를 쿼링하고 실행하는데 도움을 준다.

ㅇ Data Access/Integration

데이터베이스, XML 또는 Messaging을 포함한 다양한 형태의 데이터에 접근하기 용이하도록 하는 모듈들의 모음

  • Spring JDBC
    Java JDBC API에 대한 추상화를 제공한다. 추상화와 함께 JDBC Template을 제공하여 데이터에 쉽게 접근 가능하도록 한다.
  • Spring ORM
    스프링은 ORM 프레임워크를 제공해준다.(JPA, Hibernate)
  • Spring Transactions
    Spring Transactions Management API는 데이터베이스 뿐만 아니라 객체의 트랜잭션을 균일하게 관리해준다. 프로그래밍 방식과 선언적 트랜잭션 관리를 모두 지원한다.

ㅇ Web
Web Application을 빌드할 때 사용하는 컴포넌트

  • Spring Web
    Multipart file을 업로드하거나 IoC 컨테이너를 초기화 하는 등 웹의 기초적인 대부분을 관리한다.
  • Spring Web Servlet
    Web Servlet 모듈은 웹 애플리케이션 실행에 필요한 MVC 구현이 포함되어 있다.
  • Spring Web Sockets
    Web Socket이란 클라이언트와 서버를 이어주는 터널이라 생각하면 되는데, 웹 소켓을 구축하는데 도움을 준다.