본문 바로가기
Spring/Toby's Spring Reading Club

1-7. 스프링 핵심 기술의 응용

by Soono991 2023. 1. 15.
현실적으로 SQL의 변경 작업은 생각보다 빈번히 일어납니다. 개발 중에는 물론이고 운영 중인 시스템의 SQL을 변경해 달라는 요청도 드물지 않습니다.
그렇다고, 그때마다 DAO 코드를 수정하고 이를 다시 컴파일해서 적용하는 건 번거로울 뿐만 아니라 위험하기도 합니다.
(p.558)

 

이번장은 초난감 DAO에 아직 남아있는 SQL 문자열을 분리하는 과정을 통해 스프링의 여러 추상화된 기술을 설명하며 다시 한번 DI의 중요성에 대해 설명합니다.


1장부터 지금까지 계속해서 DI를 강조하는데, 실제 읽기 모임에서도 토비님은 DI가 정말 중요하다고 거듭 언급하실정도로 스프링을 학습하는 데 있어서 DI는 꼭 빠트릴 수 없는 것 같습니다.

 

DI란 결국 미래를 프로그래밍 하는 것입니다.
(p.618)

 

그리고 DI를 적용하기 위해서 인터페이스 프로그래밍도 굉장히 중요합니다.

 

DI를 DI답게 만들기 위해서는 두 개의 오브젝트가 인터페이스를 통해 느슨하게 연결돼야 합니다.

이유는 다형성을 얻기 위해서 입니다. DI를 통해 의존 오브젝트가 가진 핵심 로직을 바꿔서 적용하는 것 외에도 프락시, 데코레이터, 어댑터, 테스트 대역 등의 다양한 목적을 위해 인터페이스를 통한 다형성이 활용됩니다.

오브젝트가 그 자체로 충분히 응집도가 높은 작은 단위로 설계됐더라도, 목적과 관심이 각기 다른 클라이언트가 있다면 인터페이스를 통해 이를 적절하게 분리해 줄 필요가 있고, 이를 객체지향 설계 원칙에서는 인터페이스 분리 원칙이라고 합니다.

 

DI는 특별한 이유가 없는 한 항상 인터페이스를 사용한다고 기억해두자.
굳이 인터페이스를 써야 하냐고 주장하는 사람을 만났는데 논리적으로 설득할 자신이 없거든 DI는 원래 인터페이스를 쓰게 돼 있다고 우겨도 좋다.
분명한 이유가 있어서 인터페이스를 사용하지 않는 경우가 없지는 않겠지만, 단지 인터페이스를 추가하기가 귀찮아서 약간의 게으름을 부리고자 인터페이스를 생략한다면 이후의 개발, 디버깅, 테스트, 기능의 추가, 변화 등에서 적지 않은 부담을 안게 될 것이다.
(p.620)

 

'Spring > Toby's Spring Reading Club' 카테고리의 다른 글

1-8. 스프링이란 무엇인가?  (0) 2023.01.15
1-6. AOP (2)  (0) 2023.01.10
1-6. AOP (1)  (0) 2023.01.09
1-5장. 서비스 추상화  (0) 2023.01.08
1-4장. 예외  (0) 2023.01.08

댓글