더북(TheBook)

인터페이스와 DI는 서로에게 도움이 되는 기술입니다. 애플리케이션을 인터페이스로 명확하게 설계하고 코딩하면 유연한 애플리케이션을 만들 수 있지만, 이 애플리케이션 내에서 인터페이스를 서로 연결하는 작업은 매우 복잡하며 개발자에게 추가 코딩에 대한 부담을 안겨줍니다. DI를 사용하면 애플리케이션을 인터페이스 기반으로 설계하는데 드는 추가 코드가 거의 필요하지 않습니다. 이와 마찬가지로 인터페이스를 사용하면 빈이 의존성을 충족시키는 인터페이스의 어떤 구현체라도 사용할 수 있어 DI의 활용을 극대화할 수 있습니다. 또한, 인터페이스를 사용하면 스프링은 JDK의 동적 프록시(Proxy 패턴)를 활용해 크로스커팅 관심사(crosscutting concerns)7에 대해 AOP와 같은 강력한 기능을 사용할 수 있습니다.

DI와 관련해 스프링은 프레임워크라기보다는 컨테이너 역할을 합니다. 스프링은 애플리케이션 내에서 의존 관계를 가진 모든 클래스의 인스턴스를 제공하지만 이를 위해 특정한 방법을 강제하지 않습니다. 스프링에서 DI를 사용하려면 클래스가 자바빈 명명 규칙을 따르기만 하면 됩니다. 즉, 특정한 클래스를 상속하거나 정해진 명명 스키마를 따르지 않아도 됩니다. 다만 DI를 사용하는 애플리케이션은 자바빈이 더 많은 속성을 노출하도록 변경하기만 하면 되며, 이를 통해 스프링이 런타임에 더 많은 의존성을 주입할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.