Java/spring

[spring] 스프링 프레임워크(Spring Framework)란?

박남수 2021. 7. 25. 15:22

스프링 프레임 워크란?

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

 

  1. 애플리케이션 프레임워크
    • 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말합니다. 애플리케이션 프레임워크는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크입니다
  2. 경량급
    • EJB(Enterprise JavaBeans)는 기술에 대한 과도한 욕심으로 인해 개발환경과 운용서버, 개발과 빌드, 테스트 과정, 작성된 코드 모두를 매우 무겁고 복잡하게 만들었습니다. 그에 반해 스프링은 가장 단순한 서버환경인 톰캣(Tomcat)이나 제티(Jetty)에서도 완벽하게 동작합 니다. 스프링의 장점은 그런 가볍고 단순한 환경에서도 복잡한 EJB와 고가의 WAS를 갖춰야만 가능 했던 엔터프라이즈 개발의 고급 기술을 대부분 사용할 수 있다는 점입니다.
  3. 오픈소스
    • 오픈소스란 말 그대로 소스가 모두에게 공개되고, 특별한 라이선스를 취득할 필요 없이 얼마든지 가져다 자유롭게 이용해도 된다는 뜻입니다. 스프링에 적용된 오픈소스 라이선스는 오픈소스 라이선스 중에서도 비교적 제약이 적고 사용이 매 우 자유로운 편인 아파치 라이선스 버전 2.0(Apache)입니다.

 

스프링 프레임 워크의 특징

  1. POJO(Plan Old Java Object) 기반의 프레임워크
    • 특정 규약, 특정환경에 종속되지 않습니다.
  2. DI(Dependency Injection)을 지원
    • 각 계층이나 서비스 들 사이 또는 객체들 사이에 의존성이 존재할 경우 스프 링 프레임워크가 서로를 연결시켜줍니다. 이는 클래스들 사이에 약한 결합을 가능케 합니다.
  3.  제어의 역전(IoC : Inversion of Control)을 지원
    • 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출합니다.
  4. AOP(Aspect Oriented Programming)를 지원
    • 트랜잭션, 로깅, 보안 등 여러 모듈에서 공통적으로 지원하는 기능을 분리하 여 사용할 수 있습니다.
  5. 확장성이 높다
    • 스프링 프레임워크의 소스는 모두 라이브러리로 분리시켜 놓음으로써 필요 한 라이브러리만 가져다 쓸 수 있습니다. 그리고 많은 외부 라이브러리들도 이미 스프링 프레임워크와 연동되고 있습니다.

 

스프링의 구성

이미지 출처: spring.io