Spring 프레임워크 개요

1. 스프링 프레임워크란?

Java 엔터프라이즈 개발을 위한 오픈소스 기반의 경량급 애플리케이션 프레임워크

  • 애플리케이션 프레임워크
    • 특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크
    • 필요한 부분만 골라서 커스터마이징, 테일러링하는 작업이 필요
  • 경량급 프레임워크
    • 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있음
    • 중량급 프레임워크인 EJB와 대조됨
  • 엔터프라이즈 개발 용이
    • 개발자가 복잡하고 실수하기 쉬운 Low Level에 많이 신경 쓰지 않으면서 Business Logic 개발에 전념할 수 있도록 해줌
  • 오픈소스
    • Spring은 OpenSource의 장점을 충분히 취하면서 동시에 OpenSource 제품의 단점과 한계를 잘 극복함

2. 스프링 프레임워크의 특징

  • 컨테이너 제공
    • Spring 컨테이너는 Java객체의 Life Cycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다
    • 핵심 객체의 Life Cycle을 개발자가 아닌 컨테이너가 관리한다 => 의존성 주입
  • 의존성 주입(Dependency Injection) 지원
    • Spring은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 한다
  • AOP(Aspect Oriented Programming) 지원
    • Spring은 트랜잭션이나 로깅, 보안과 같은 공통 모듈을 비즈니스 핵심 모듈에서 분리해서 적용할 수 있다
    • 핵심 기술과 주변 기술을 분리해서 개발할 수 있게 해준다
  • POJO(Plain Old Java Object) 지원
    • Spring 컨테이너에 저장되는 Java객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속 받지 않아도 된다
  • 트랜잭션 처리를 위한 일관된 방법 지원
    • JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용 가능
  • 영속성(Persistence)과 관련된 다양한 API지원
    • Spring은 MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relation Mapping) 프레임워크 연동 지원

스프링의 3대 특징

  1. 컨테이너 제공
  2. AOP 지원
  3. 서비스 추상화