[이해x] Spring Framework란?

myeonji·2022년 1월 9일
1

Spring

목록 보기
1/22

Spring Framework란?


오늘은 Spring Framework가 무엇인지 알아보겠습니다.

Spring Framework가 어디서 오게 되었는지 간단히 살펴보면, Spring Framework가 등장하기 전에는 EJB라는 기술을 통해 웹 애플리케이션을 개발하였습니다. 하지만, 개발자들에게 있어서 이 기술은 부족한 개발 생산성과 이동성을 이유로 사용하기가 어렵고 까다로웠습니다. 따라서 이러한 단점을 보완하기 위한 기술을 만들어내기 시작하였고, 그 과정에서 가장 호평을 받은 기술이 바로 스프링 입니다.

프레임워크 vs 라이브러리

먼저, 단순히 스프링이라고 부르는 것이 아니라 스프링 프레임워크라고 부르는 이유가 무엇인지 알아보겠습니다. 더불어, 라이브러리와의 차이점도 함께 알아보겠습니다.

  • 프레임워크는 뼈대나 기반 구조를 뜻하고, 제어의 역전(IoC) 개념이 적용된 대표적인 기술입니다. 소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합'이라고 하며, 완성된 애플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야합니다.

  • 라이브러리는 자주 사용되는 로직을 재사용하기 편리하도록 정리된 일련의 코드들의 집합입니다. 즉, 개발자가 만든 클래스에서 호출하여 사용하고, 클래스들의 나열로 필요한 클래스를 불러 사용하는 방식입니다.

두 차이의 관건은 애플리케이션의 흐름을 누가 쥐고 있느냐에 달려있습니다. 프레임워크는 전체적인 흐름을 스스로가 쥐고 있고 사용자가 그 안에 필요한 코드를 짜 넣어 틀 안에 이미 제어 흐름에 대한 주도성이 있지만, 라이브러리는 사용자가 전체적인 흐름을 만들며 필요한 기능을 구현하기 위해 호출하는 측에 주도성이 있습니다.

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

이제 본격적으로 스프링 프레임워크에 대해 알아보겠습니다.

스프링 프레임워크를 문장으로 표현하자면, 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 라고 할 수 있습니다. 또는 엔터프라이즈급 애플리케이션을 개발하기 위한 경량화된 솔루션 이라고도 표현합니다.

오픈소스 애플리케이션 프레임워크

  • 소스가 공개되어 있고 많은 사람들이 수정하거나 의견을 제시할 수 있는 소스로 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말합니다.

경량화된 솔루션

  • 기존의 EJB처럼 툴의 도움 없이는 다루기 힘든 까다로운 패키징, 서버 배치 등을 없애고 쉽게 사용할 수 있게 되었음을 의미합니다.

스프링 프레임워크(Spring Framework)의 특징

  1. 경량 컨테이너

    • 자바 객체를 직접 관리 : 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어옵니다.
  2. Ioc(Inversion of Control) 기반의 프레임워크

    • 제어의 역전 : 특정 객체가 컨트롤 할 수 있도록 위임 받고, 위임 받은 객체에 의해서만 객체를 사용하고 생성할 수 있습니다. 개발자가 객체를 만들기는 하지만, 객체의 제어권은 특정 객체에게 넘어가게 되는 것 입니다.
  3. POJO(Plain Old Java Object) 기반의 프레임워크

    • 평범한 자바 객체 : getter/setter를 가진 단순 자바 오브젝트로, 의존성 없이 유지 보수와 테스트 및 편리한 유연성을 갖고 있습니다.
  4. DI(Dependency Ingection)

    • 의존 관계 주입 : 객체들이 서로 의존하는 관계가 되도록 의존성을 주입하는 것 입니다. POJO 객체들 사이의 의존 관계를 Spring이 알아서 연관성을 맺어줍니다.
  5. DL(Dependency Lookup)

    • 의존성 검색 : 개발자들이 빈이 저장되어 있는 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈을 검색하는 방법입니다.
  6. AOP(Aspect Oriented Programming) 지원

    • 관점 중심 프로그래밍 : 공통기능과 핵심기능을 분리시켜 중복된 코드를 줄이고 재활용성이 극대화되며, 단순하고 깔끔하게 작성할 수 있습니다.
  7. WAS에 독립적인 개발 환경

    • 무거운 자바 서버 : 과거의 EJB가 동작하기 위해 WAS가 필요했습니다. 하지만 스프링은 단순한 서버 환경인 톰캣(Tomcat)이나 제티(Jetty)에서도 동작할 수 있습니다.

스프링 프레임워크(Spring Framework)의 구조

  • Spring Core
  • Spring Context
  • Spring AOP
  • Spring DAO
  • Spring ORM
  • Spring Web
  • Spring MVC

출처

https://khj93.tistory.com/entry/Spring-Spring-Framework%EB%9E%80-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC

0개의 댓글