웹/Backend

[SPRING] 스프링이란? (1)

또도닝 2021. 4. 27. 09:00

오늘부터 여러개의 포스팅에 걸쳐 스프링을 정리해보려고 한다. 

 

스프링은 왜 탄생했는가?

 원래 스프링을 사용하기 전에는 EJB를 사용했다. 

EJB를 사용하면 상태관리, 멀티 쓰레딩, 리소스 풀링과 같은 것들을 WAS 단계에서 알아서 처리해주기 때문에 개발자가 따로 건드릴 필요가 없다는 장점이 있다. 하지만 EJB라는 서버가 따로 필요하고, 코드를 수정해서 재 배포하는 과정이 복잡해서 유지보수가 어렵다는 단점이 있었다. 게다가 웹사이트가 점점 커지면서 EBJ를 사용하지 않고도 쓸 수 있는 새로운 프레임워크가 필요했다.

 

 그래서 POJO가 생겨났다.

 POJO는 특정 프레임워크나 기술에 의존적이지 않은 자바 객체인데, 특정 기술에 종속적이기 않기 때문에 생산성과 이식성이 높다. 또, AOP(Aspect Oriented Programming)나 DI(Dependency Injection) 같은 새로운 프로그래밍 방법을 사용할 수 있었다.

따라서 사람들은 점차 POJO + 경량 프레임워크를 사용했는데 이것이 스프링의 모체가 되었다. 

 

그렇다면 스프링이란?

스프링 프레임워크는 엔터프라이즈 급 애플리케이션을 만들기 위한 모든 기능을 종합적으로 제공하는 경량화 된 솔루션이다. JEE(Java Enterprise Edition)가 제공하는 다수의 기능을 지원하고 있기 때문에, JEE를 대체하는 Framework로 자리잡고 있으며, DI나 AOP와 같은 기능도 지원한다. 

 

Enterprise Application 개발 시 복잡함을 해결하는 것이 스프링의 핵심이다. 

 

1. POJO

- 특정 환경이나 기술에 종속적이지 않은 자바 객체

- 테스트 용이, 객체지향 설계를 자유롭게 적용 가능.

2. PSA 

- 환경과 세부 기술의 변경과 관계 없이 일관된 방식으로 기술에 접근 할 수 있게 해주는 설계 원칙.

- 기술적인 복잡합은 추상화를 통해 분리. 

3. loC/DI

- 유연하게 확장 가능한 객체들을 만들어 두고 객체 간의 의존관계는 외부에서 다이나믹하게 설정

4. AOP

- 관심사의 분리를 통해서 소프트웨어의 모듈성 향상.

- 공통 모듈을 여러 코드에 쉽게 적용 가능.

 

여기까지는 스프링의 탄생 배경과 특징을 써 보았다. 

이 다음 글에서 loC/DI와 AOP에 대해 더 자세하게 다뤄볼 예정이다.