스프링의 핵심은 무엇일까?
스프링은 자바 언어 기반의 프레임워크다. 따라서 객체 지향 언어라는 자바의 가장 큰 특징을 살려낸다.
즉, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크다.
객체 지향 프로그래밍은 컴퓨터 프로그램을 객체들의 모임으로 파악하는 것이다. 기존의 명령어 목록으로 보는 시각에서 벗어난다.객체들은 메시지를 주고 받고, 데이터를 처리할 수 있다.
객체 지향 프로그래밍의 장점은 유연하고 변경이 용이하다는 점! 때문에 많이 사용된다.
객체 지향의 특징 중 하나는 다형성이다.
다형성을 실세계 예시로 비교해보면 자동차를 예로 들 수 있다. 예를 들어서, 운전자는 운전자의 역할이 있고 자동차는 자동차의 역할이 있다. 자동차를 실제 구현하는 건 자동차 회사들의 몫이다.
📍 현대 자동차냐 테슬라 자동차냐에 따라서 실제 세부 구현은 다르지만, 자동차의 역할 자체는 똑같다. 만드는 회사가 다르다고 해서 자동차의 역할을 다르게 만들지는 않는다. 예를 들어서 자동차 회사마다 어떤 차는 A 방식으로 후진하게 만들고, 또 어떤 차는 B 방식으로 후진하게 만들지는 않는다.
위 예시의 핵심은 무엇이냐하면, 역할과 구현을 구분한다는 것이다. 다형성의 핵심도 역할과 구현을 구분한다.
이런 방식으로 개발을 하면 장점은 다음과 같다.
📍 클라이언트는 철저하게 역할에만 의존하고 구현을 분리하면, 구현을 아무리 바꿔도 클라이언트는 영향을 받지 않는다.
📍자바에서도 클라이언트는 인터페이스(역할)에 의존하고, 인터페이스를 구현(구현)한 객체는 따로 분리한다.
여기서 말하는 📌 클라이언트는 요청을 하는 객체, 서버는 응답을 하는 객체다. 다형성 덕분에 클라이언트를 변경하지 않고, 서버의 구현을 유연하게 변경할 수 있다.
스프링은 다형성을 극대화할 수 있게 도와주는 프레임워크.