1장에서는 초난감 DAO 코드에 DI를 적용해나가는 과정을 통해서 관심이 다른 코드를 다양한 방법으로 분리하고,

확장과 변경에 용이하게 대응할 수 있는 설계구조로 개선하는 작업을 했다.

확장에는 열려있고 변경에는 굳게 닫혀 있다는 객체지향 원리중 하나인

개방 패쇄 원칙 OCP 를 생각 해보자. 이 원칙은 코드에서 어떤 부분은 변경을 통해 그 기능이 다양해지 확장하려고 하는 성질이 있고, 어떤 부분은 고정되어 있고 변하지 않으려는 성질이 있음을 말해준다.

변화의 특성이 다른 부분을 구분해주고, 각각 다른 목적과 다른 이유의 의해 독립적으로 변경 될 수 있는

효율적인 구조를 만들어 주는 것이 바로 이 개방 패쇄 원칙이다.

템플릿이란 이렇게 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며

일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로 독립시켜서

효과적으로 활용할 수 있도록 하는 방법이다.

3장에서는 스프링에 적용된 템플릿 기법을 살펴보고, 이름 적용해 보는 DAO 코드를 만드는 방법을 알아보자.