스프링 스타일 프로그래밍
7장은 SqlService 라는 빈을 추가해 SQL문을 xml파일로 완전히 분리해 내는 과정을 스프링 스타일의 개발을 통해 보여준다.
스프링 프레임워크를 제대로 사용하는 것은 스프링이 제공해 주는 빈, 어플리케이션 컨텍스트 등을 사용해 개발하는 것 만을 뜻하는 것이 아니다. 스프링이 제공해주지 않는 기능을 구현할때도, DI, 서비스 추상화, AOP와 같은 핵심 개념들을 지켜 유연하게 확장되며 변화에 영향받지 않는 결합도가 낮은 코드를 만드는 것이 제대로 스프링을 사용하는 방법이다.
-
SRP를 지키기 위해, 먼저 책임이 다른 코드들이 한 클래스에 있다면 여러 인터페이스로 구분한다. 그 다음은 다중 인터페이스 구현을 통해 자기참조 빈의 형태로 리팩토링한뒤, 이후 아예 다른 클래스로 점진적으로 발전시켜 나가는 것을 추천한다.
-
위임은 중복을 제거하는, 대개의 경우 상속보다 나은 패턴이다.
-
DI는 인터페이스를 사용한다.
-
클라이언트에 따라서 인터페이스를 만들 때, 기존의 인터페이스를 상속하거나 새로이 만들어 구현할 수 있다.
-
같은 클래스가 여러 인터페이스를 구현한다는 것은, 해당 클래스를 사용하는 클라이언트들이 서로 다른 창으로 한 객체를 바라보는 것과 같다.
결론
인터페이스 분리, DI, 서비스 추상화까지 스프링이 지향하는 객체 지향 프로그래밍의 핵심은 인터페이스의 활용을 통해 결합도를 낮추고, OCP를 달성하는 것이다.