왜 스프링일까?
1. 왜 스프링일까?
스프링 프레임워크는 자바 기반 애플리케이션을 개발하는 데 필요한 거의 모든 기능을 지원하는 오픈소스 프레임워크다.
단순히 웹 개발뿐만 아니라, 데이터 처리, 보안, 배치 작업 등 기업 환경의 복잡한 시스템을 구축하는 데 필요한 포괄적인 프로그래밍 및 설정 모델을 제공을 한다.
무엇보다 스프링의 핵심 철학은 “좋은 객체 지향 설계”를 돕는 것이다.
복잡하고 무거웠던 과거의 자바 개발 방식(EJB)을 비판하며, 개발자들이 순수한 자바 객체(POJO)를 사용해 비즈니스 로직에만 집중할 수 있도록 도와준다.
POJO(Plain Old Java Object)
스프링은 특정 프레임워크에 의존하지 않는 순수한 자바 객체를 사용하여 애플리케이션을 개발하도록 한다.
즉, 비즈니스 로직을 작성할 때 복잡한 프레임워크 API에 의존하지 않고 일반적인 자바 클래스 형태로 개발할 수 있다.
이를 통해
- 코드의 재사용성 증가
- 테스트 용이성 향상
- 유지보수성 개선(결합도 감소) 다음과 같은 장점을 얻을 수 있다.
IoC And DI(Inversion of Control And Dependency Injection)
IoC는 제어의 역전이라는 개념으로, 객체의 생성과 관리 권한을 개발자가 아닌 스프링 컨네이터가 담당하는 방식이다
DI는 IoC를 구현하는 대표적인 방법으로, 객체가 필요로 하는 의존성을 외부에서 주입하는 방식이다
ex)
1
2
3
4
5
6
7
8
9
10
class OrderService {
private final PaymentService paymentService;
public OrderService(PaymentService paymentService) {
this.paymentService = paymentService;
}
}
다음 같이 스프링 컨테이너가 PaymentServcie 객체를 생성한 뒤 OrderService에 자동으로 주입한다.
다음과 같은 방식의 잠점은 다음과 같다
- 객체 간 결합도 감소
- 테스트 코드 작성이 쉬움
- 유지보수와 확장이 쉬움
2. 스프링이 널리 사용되는 이유
스프링은 자바 기반 서버 개발에서 사실상 표준 프레임워크로 사용되고 있다
- 풍부한 생태계
- 대규모 서비스에 적합
- Spring Boot 등장
정리
스프링 프레임워크는 기존 Java EE 개발 방식의 복잡성을 해결하기 위해 등장했으며, POJO, IoC, DI와 같은 핵심 개념을 통해 좋은 객체 지향 설계를 지원한다.
또한 풍부한 생태계와 안정성을 바탕으로 현재 자바 기반 서버 개발에서 가장 널리 사용되는 프레임워크 중 하나로 자리 잡았다.