스프링

스프링(Spring)은 왜 사용할까?

쿠쿠s 2022. 3. 25. 22:56

 

스프링이라는 기술을 배우고, 사용하는데 왜 사용하는지도 모르고 쓰는거 같아서 이렇게 정리를 하게되었습니다.

 

스프링이란?

 

우선 스프링은 왜 만들어 졌을까요? 스프링이라는 기술의 핵심 컨셉은 무엇인지 생각해보신 적이 있으신가요

스프링은 자바언어 기반의 프레임워크입니다. 자바언어 기반이니 자바의 가장 큰 특징은 무엇일까요. 바로 객체지향언어 입니다.

스프링은 객체지향언어가 가진 특성(추상화, 상속, 캡슐화, 다형성)을 살려내는 프레임워크 라고 할 수 있습니다.

 

즉. 스프링은 좋은 객체지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다.

 

그러면 왜 사용하는지도 답이 자연스럽게 나오게 됩니다. 스프링이 지원하는 기술 DI(Dependency Injection), DI 컨테이너 제공을 통하여 다형성과 OCP(Open Closed Principle), DIP(Dependency inversion principle) 를 가능하게 지원을 합니다.

그래서 클라이언트의 코드 변경없이 기능을 확장이 가능하고, 프로그램을 마치 부품 교체하듯이 개발이 가능하게 됩니다.

 

결론은 좋은 객체 지향 개발을 하려고 OCP, DIP 원칙을 지키면서 개발을 하려고 보니 할일이 많아 결국 프레임워크로 만들어 지게 된게 스프링이라, 스프링을 사용하면 좋은 객체 지향 개발을 할 수 있게 됩니다.

 

 

 

다형성

 

추가로 객체지향프로그래밍의 핵심인 다형성에 대해서 간단히 정리를 간단하게 하겠습니다. 

다형성은 하나의 객체가 여러타입을 가질 수 있다. 라고 말할 수 있지만 여기서는 실세계에 비유하여 역할구현 으로 나누어 그림을 통해 설명을 드리겠습니다.

 

 

 

운전자 역할(클라이언트) 와 자동차 역할(인터페이스) 가 있습니다. 실세계에서 운전자는 운전방법만 안다면 차량이 K3, 아반떼, 테슬라와 관계없이 모두 운전이 가능합니다. 심지어 새로운 차량이 출시가 되어도 해당 차량을 운전할 수 있습니다. 이게 바로 다형성입니다.

클라이언트는 대상의 역할만 알면 됩니다. 구현 대상의 내부 구조를 몰라도 되고, 그 구조가 변경되어도 영향을 받지 않습니다. 심지어 대상 자체를 변경해도 영향을 받지 않습니다.

역할과 구현을 철저하게 분리하자!

 

 

 

 

다형성의 본질

  • 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있습니다.
  • 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.

한계

  • 역할(인터페이스)자체가 바뀌면 큰 변경이 발생하게 된다.