인터페이스를 두고 DI 를 적용하자.
UserDao 와 DB 커넥션 생성 클래스 사이
DataSource
인터페이스
UserDao 는 자신이 사용하는 오브젝트 클래스가 무엇인지 알 필요가 없다.
오브젝트 생성에 부담이 없다.
의존 오브젝트를 언제든 바꿀 수 있다.
소프트웨어에서 절대 바뀌지 않는 것은 없다.
클래스 대신 인터페이스를 사용하여 DI 를 통해 주입받는 건 쉬운 작업이다
또한 수정에 들어가는 시간과 비용 부담을 줄여줄 수 있다.
인터페이스를 두고 DI 를 적용하게 하면 다른 차원의 서비스 기능을 도입할 수 있다.
ex . 1장의 DB 커넥션 개수를 카운팅하는 부가기능
UserDao 와 ConnectionMaker 사이 부가기능 추가
추가한 기술이 필요 없어지면 설정파일을 간단히 수정하여 제거할 수 있다.
효율적인 테스트를 손쉽게 만들기 위해
자동으로 실행 가능하며 빠르게 동작하는 테스트 코드 → 활용이 용이
작은 단위의 대상에 국한해서 테스트
테스트 대상 범위가 넓어지면 테스트 작성이 어렵다
DI 는 테스트가 작은 단위 대상에 독립적으로 만들어지고 실행되게 하는데 중요한 역할
테스트 코드에 의한 DI
p.191
@DirtiesContext