본문 바로가기
스프링

스프링 프레임워크란 무엇일까?

by 근즈리얼 2021. 8. 17.
728x90

이번 포스팅에서는 스프링 프레임워크에 대한 정리를 해보겠습니다!!

 

 

스프링 프레임워크는 어디서 왔을까?

스프링 프레임워크는 정말 쉽게 개발자가 웹 애플리케이션 개발을 좀 더 쉽게 할 수 있도록 도와주는 것입니다.

스프링 프레임워크가 등장하기 전에 EJB라는 기술이 웹 애플리케이션 개발을 도와주고 있었습니다.

 

EJB는 순수한 자바로 개발을 하기에 부담을 느끼고 만들어낸 기술입니다.

- 물론 servlet, jsp 같은 기술들이 있었지만 복잡한 엔터프라이즈 애플리케이션을 구현하기에는 부담이 있었습니다.

 

여기서 개발자가 느끼는 부담은 비즈니스 로직뿐만 아니라 로우레벨(멀티쓰레딩, 리소스풀링, 트랜잭션, 보안 등)의 기술적인 처리도 요구되는 것이었습니다.

-> 위와 같은 문제를 해결하기 위해 EJB라는 기술을 도입해 개발자가 비즈니스 로직에만 신경을 쓸 수 있게 했습니다.

 

하지만

EJB는 객체지향의 특징과 장점을 사용하지 못했고 부족한 개발생산성과 이동성을 이유로 개발자들 사이에서 불만이 생겼습니다.

 

그럼에도

EJB를 활용하는게 엔터프라이즈 애플리케이션을 개발하기에 수월했기 때문에 객체지향의 특징을 잘 활용할 수 있는 새로운 기술이 필요하다고 생각했습니다.

 

이러한 생각을 기반으로 새로운 기술이 탄생하게 되었고

EJB라는 겨울을 지나 봄이 왔다는 뜻으로 spring이라고 이름을 지었습니다. 

 

프레임워크란??(feat. 라이브러리)

위에서 스프링이 어떻게 생긴건지에 대해서 알아봤고 이번에는 프레임워크에 대해서 알아보겠습니다.

 

프레임워크의 사전적 의미

:  프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임

 

정말인지 무슨 말인지 확 와닿지가 않습니다....

 

조금더 풀어서 알아볼게요!!

마침 라이브러리라는 단어가 나왔으니 이 단어를 활용해서 좋은 예시를 만들어 보겠습니다.

우리의 목표 제주도 가기 애플리케이션 만들기
수단 배, 비행기 스프링, diango
수단의 구성 나사, 바퀴, 못 라이브러리,클래스

위의 표를 보면 좀 이해가 쉽습니다.

수단과 수단의 구성으로 이해하면 됩니다!!

 

조금더 개발을 하는 상황으로 생각해본다면 

이런 그림을 생각할 수  있습니다.

즉 개발자의 코드가 제어할 수 있다면 라이브러리, 개발자의 코드를 제어한다면 프레임워크입니다.

-> 프레임워크 : 애플리케이션의 전체적인 흐름을 쥐고 필요한 개발자의 코드를 가져온다.

-> 라이브러리 : 개발자가 필요하다고 생각하는 기능을 구현하기 위해 라이브러리를 가져온다.

 

스프링 프레임워크란?

스프링과 프레임워크에 대해서 알아봤으니 스프링 프레임워크가 무엇인지 알아보겠습니다!!

 

많은 구글링을 통해 스프링 프레임워크를 가장 잘 나타내는 문장을 알아냈습니다

=> 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션

 

여기서 오픈소스 애플리케이션 프레임워크가 무엇인지, 그리고 경량화된 솔루션이 무엇인지 알아보겠습니다.

 

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

- 오픈 소스는 많은 사람들이 알듯이 소스가 공개되어 있고 수정하거나 의견을 제시할수 있는 소스입니다.

- 애플리케이션 프레임워크는 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크 입니다. 

-> 애플리케이션 개발의 전 과정을 빠르고 편리하며 효과적으로 처리하는데 목표를 갖고 있는 것이죠

 

경량화된 솔루션

- 여기서 경량급은 기존의 EJB처럼 툴의 도움 없이는 다루기 힘든 난해한 설정파일 구조와 까다로운 패키징, 불편한 서버 배치 등으로 인한 부담을 없애고, 쉽게 해당 기능들을 사용할 수 있게 되었음을 의미합니다.

- 기존의 EJB의 문제중 하나였던 무거움(어려운 환경설정, 패키징, 서버 배치)을 해결하면서 부담을 줄이고 쉽게 기능들을 사용할 수 있음에 따라 스프링을 경량급 솔루션이라고 부르게 되었습니다.

 

스프링 프레임워크의 특징

1. 경량 컨테이너

- 자바 객체를 직접 관리한다.

-> 객체의 생성과 소멸 즉 라이프 사이클을 관리하고 스프링에서 필요한 객체를 가져와 사용한다 ->IoC의 특징

 

2. Ioc기반의 프레임워크

- IoC(Inversion of Control)는 제어의 역전이라고 합니다.

- IoC에서 객체는 자신이 어디에 쓰이는지 어디서 만들어지는지를 모르고 자기가 사용할 객체를 선택하거나 생성하지 않습니다.

- 특정 객체가 컨트롤 할 수 있도록 위임받고 위임받은 객체에 의해서만 객체를 생성하고 사용할 수 있습니다.

=> 즉 개발자는 객체를 만들기는 하지만 객체의 제어권은 특정 객체에게 넘어가게 되는 것입니다.

 

IoC를 하기 위해서는 DI와 DL이 필요합니다.

DL(Dependency Lookup) 의존성 검색

- 컨테이너는 빈을 관리하기 위해 저장소에 빈의 클래스와 이름을 저장합니다. 이때 컨테이너의 API를 이용하여 찾고 싶은 빈을 찾는 방법입니다.

 

DI(Dependency Injection) - 의존성 주입 

- 객체들이 서로 의존하는 관계가 될 수 있도록 의존성을 주입하는 것입니다. 

- 서로 의존한다 : 특정 객체가 다른 객체를 사용

- DI는 IoC에서 각 클래스 사이에서 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 자동으로 연결해 준다고 생각하면 되겠습니다.

 

** IoC와 DI의 내용은 중요하기 때문에 다음에 또 포스팅 하도록 하겠습니다..!!

 

3. POJO 기반의 프레임워크

- POJO는 Plain Old Java Object로 평범한 오래된 자바 객체란 뜻입니다.

- 과거 EJB시절 한 가지 기능을 위해 불필요하고 복작한 로직이 과도하게 들어가는 문제가 있었고 이때 POJO가 주목받게 되었습니다

- POJO는  gettet/setter를 가진 단순 자바 오브젝트이고

- 의존성이 없이 유지,보수와 테스트 및 편리한 유연성을 갖고 있습니다.

- 이런 장점들 덕분에 좀 더 객체지향스러운 개발을 할 수 있게 되었습니다. 

 

4. AOP 지원

- AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍을 뜻입니다.

- AOP는 개발할 때 핵심기능과 공통기능을 분리시켜 핵심기능의 로직에 영향을 끼치지 않게 공통기능을 사용하는 형태입니다.

- 중복되는 코드를 줄일 수 있고 나중에 문제가 발견될 때 핵심기능과 공통기능을 따로 수정할 수 있어 효과적입니다.

- 개발자에게 비즈니스 로직만 집중할 수 있도록 해줍니다.

 

5. WAS에 독립적인 개발 환경

- 과거 EJB의 동작을 위해서는 고가의 WAS가 필요했습니다.

- 반면에 스프링은 톰캣, 제티에서도 동작이 가능하게 되었습니다.

- 비교적 가벼운 서버에서도 엔터프라이즈 개발이 가능하게 되었습니다.

 

출처

https://steady-coding.tistory.com/457?category=946250 

 

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

안녕하세요? 제이온입니다. 이번 시간에는 스프링 프레임워크가 무엇인지 가볍게 알아보겠습니다. 스프링(Spring)의 어원 스프링 프레임워크(이하 스프링)을 짧게 정의하기란 쉽지 않습니다. 프

steady-coding.tistory.com

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

 

[Spring] Spring Framework란? 기본 개념 핵심 정리

Spring Framework란? 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션입니다. 엔터프

khj93.tistory.com

 

728x90

댓글