Service - DAO 구조에서 만약 DAO를 수정해야할 일이 있다고 가정해보겠습니다. 그럴 경우 DAO를 수정하고 추가적으로 Service까지 수정할 소요가 생깁니다. 이렇게 하나를 고쳤을 때 그와 연관된 다른 코드까지 수정해야할 경우를 결합력이 강하다고 합니다. 이렇게 코드 수정이 잦아지는 것은 좋은 것이 아니기에 느슨한 결합력을 가진 코드가 선호됩니다.
위처럼 느슨한 결합력을 가지기 위해서 사용할 수 있는 방법은 우선 인터페이스가 있습니다. 한 기능에 대한 인터페이스를 작성하고 그것에 대한 구현을 분리할 경우 수정해야할 코드의 수요를 조금이나마 줄일 수 있습니다. 즉 결합력을 조금은 낮출 수 있습니다. 하지만 이렇게 해도 어느정도는 코드를 수정해야할 소요가 발생합니다. Spring에서는 이러한 소요를 없애기 위해서 외부 설정을 통해 객체 생성과 조립을 위부에서 설정할 수 있게 합니다.