Spring의 핵심 컨셉
- 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징은 객체 지향 언어
- Spring은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
좋은 객체 지향 프로그래밍이란?
다형성 Polymorphism
자동차가 바뀌어도 운전자 역할은 변함 없다.
운전자는 자동차 역할에 대해서 알고 있음.
자동차 역할을 만들고 분리한 것은, 운전자를 위해서임.
자동차 세상을 무한히 확장 가능하다.
Client에게 영향을 주지 않고, 새로운 기능을 제공할 수 있다.
역할과 구현으로 세상을 구분했기 때문.
유연하고 변경이 편리해진다.
역할과 구현을 분리
- Client는 interface만 알면 된다.
- Client는 내부 구조를 몰라도 된다.
- Client는 내부 구조 또는 구현 대상 자체를 변경해도 영향을 받지 않는다.
역할
== 인터페이스
구현
== 클래스
또는 객체
다형성의 본질
- Interface를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.
- 다형성의 본질을 이해하려면 협력이라는 객체 사이의 관계에서 시작해야 한다.
- Client를 변경하지 않고, server의 구현 기능을 유연하게 변경할 수 있다.
그러므로, Interface를 안정적으로 잘 설계하는 것이 중요하다.
Spring은 다형성을 극대화해서 이용할 수 있게 도와준다.
제어의 역전(IoC), 의존관계 주입(DI) 등.