Spring을 사용하는 이유

이대건·2023년 12월 15일
0

Spring

목록 보기
5/7

📌 Spring은 java 기반 엔터프라이즈 애플리케이션 개발에 사용되는 프레임워크다.

왜 사용하는지를 알기 위해서 Spring이 개발자 대신 어떤 작업을 대신해주는지 알아보자.

기존 개발자가 해야했던 작업

  • 개발자는 디자인패턴과 SOLID 원칙을 기반으로 객체지향 엔터프라이즈 애플리케이션을 설계해야 한다.

🧭 SOLID의 O인 The Open Closed Principle와 전략패턴, IoC를 정리하고 이를 기반으로 왜 Spring의 필요성을 느껴보자.


개방 폐쇄 원칙(The Open Closed Principle)

객체지향설계시 깔끔한 설계를 위한 원칙중 하나이다.

📌 클래스나 모듈은 확장에는 열려있어야하고, 변경에는 닫혀있어야 한다.

인터페이스를 구현하는 클래스 여러개가 있다고 가정하자
      - 만약 인터페이스에서 지원하는 기능을 확장한다고 가정하면 인터페이스만 수정하면 되도록 설계해야한다.
      - 인터페이스 수정시 구현하는 클래스에는 변화가 없도록 설계해야한다.

위와 같은 설계가 개방 폐쇄의 원칙을 따른 설계라고 할 수 있다.

이러한 개방 폐쇄의 원칙은 애플리케이션 코드가 높은 응집도와 낮은 결합도를 갖게한다.

  • 인터페이스를 사용해 확장 기능을 정의한 대부분의 API가 개방 폐쇄 원칙을 따른다고 볼 수 있다.

전략 패턴(Strategy pattern)

📌 자신의 기능 context에서 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴이다.

  • 개방 폐쇄 원칙 구현에 가장 잘 들어맞는 패턴이라고한다.
  • 전략패턴이라고 불리는 이유는 인터페이스를 만든뒤 필요에 따라 인터페이스를 전략적으로 구현할 수 있기 때문인다.

IoC(Inversion of Control)

프레임워크를 사용하는 이유를 알기 위해 IoC의 개념과 필요성 정리가 필요하다.

📌 프로그램의 제어 흐름 구조가 뒤바뀌는 것

  • 일반적인 제어의 흐름은 객체가 다음에 사용할 객체를 결정하고 호출하는 방식
  • 제어의 역전이란 객체 자신이 사용할 객체를 결정, 생성을 하지 않는다. 모든 제어권을 다른 대상에게 위임한다.
  • IoC는 서블릿기반의 백엔드 서버 개발시에도 사용하는 개념이다.
    • 모든 제어를 개발자가 아닌 Web Application Server(WAS)가 해주는 방식

→ 프레임워크는 제어의 역전이 적용된 대표적인 기술이다.

프레임워크 VS 라이브러리

  • 프레임워크는 애플리케이션 코드가 프레임워크에 의해 사용된다.
    • 우리가 짠 코드는 프레임워크에 의해 수동적으로 동작해야 한다.
  • 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
    • 즉, 실행중 필요한 기능이 있을때만 라이브러리를 사용할 뿐이다.

→ IoC를 고려한 개발은 개방 폐쇄 원칙을 지킴과 동시에 디자인패턴에 대한 고민을 하면서 개발해야한다. 이는 반복적인 일이면서 쉽지 않기에 프레임워크의 도움을 받는 것이 개발에 있어서 훨씬 유리하다.

스프링을 사용하는 이유

📌 스프링은 IoC를 극한까지 적용하고 있는 Java기반 프레임워크다.

엔터프라이즈 애플리케이션 개발을 철저히 객체지향프로그래밍 방식으로 하기 위해 반복적으로 개방 폐쇄 원칙과 전략 패턴을 고려하여 IoC를 구현하기 보다는 스프링 프레임워크를 사용하여 보다 쉽게 IoC를 구현하기 위해 사용한다.

출처

  • 토비의 스프링 3.1 v1
profile
일낸머스크

0개의 댓글

관련 채용 정보