Spring이란?

안성희·2025년 7월 31일

개요

  • Spring 가장 많이 쓰이는 자바 웹 프레임워크
  • 얘는 대체 뭘까?

정의

  • Spring Framework는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • 엔터프라이즈급 애플리케이션 개발을 위한 포괄적인 기능을 제공
  • 전자정부 표준프레임워크의 기반 기술

탄생배경

  • Spring 이전에는 EJB(Enterprise Java Been) 라는 기술이 표준으로 사용됨
    • EJB의 문제점
      1. 특정 회사의 EJB 컨테이너에 의존하여 이식성이 낮음
      2. 프로그래밍 모델이 복잡
      3. 자동화된 테스트가 거의 불가능
  • 이러한 문제를 해결하기 위해 Rod Johnson"Expert One-on-One J2EE Design and Development"라는 책을 출간하면서 Spring의 기초가 되는 코드와 개념들을 선보임

Spring의 특징

IoC(Inversion of Control): 제어의 역전

  • 애플리케이션 흐름의 주도권을 개발자가 아닌 Spring이 갖는 것을 의미
  • 개발자가 직접 객체를 생성하지 않고 Spring의 컨테이너가 대신 처리
  • 주요 이점
  1. 객체 간의 결합도 감소
  2. 유연한 코드 작성 가능
  3. 테스트 용이성 향상

DI(Dependency Injection): 의존성 주입

  • IoC를 구체적으로 구현하는 방법
  • 객체가 필요한 의존성을 외부에서 주입 받음
  • DI의 세가지 방식
  1. 생성자 주입: 생성자를 통해 의존성 제공
  2. Setter 주입: Setter 메서드를 통해 의존성 제공
  3. 필드 주입: 필드에 직접 주입

AOP(Aspect-Oriented Programming): 관점 지향 프로그래밍

핵심 비즈니스 로직과 부가 기능(로깅, 보안, 트랜잭션 등)을 분리
코드의 모듈성과 재사용성을 높이는 프로그래밍 패러다임

  • AOP 활용 예시
    • @Transactional : 트랜잭션 관리
    • 로깅 처리
    • 보안 검증
    • 성능 모니터링

PSA(Portable Service Abstraction): 서비스 추상화

환경의 변화와 관계없이 일관된 방식으로 기술에 접근할 수 있는 추상화 구조
개발자는 구체적인 구현보다는 인터페이스에 의존하여 코드를 작성

  • PSA의 예
    • Spring Web MVC
    • Spring Transaction
    • Spring Cache

POJO(Plain Old Java Object) 지원

특정 인터페이스를 구현하거나 클래스를 상속받지 않아도 되는 순수한 자바 객체 지원
코드를 수정 없이 Spring에서 사용 가능

참고

Spring과 Spring Boot의 차이점을 아시나요?

profile
무재다능 개발자

0개의 댓글