이펙티브 자바 #item5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

임현규·2023년 1월 2일
0

이펙티브 자바

목록 보기
5/47
post-thumbnail

잘못된 싱글턴 또는 정적 유틸리티 클래스

특정 자원을 사용하는 경우 private static final을 이용해 인스턴스를 생성해서 활용하거나 싱글턴을 사용하는 경우가 있다. 이 경우 테스트가 쉽지 않다. 왜냐하면 private으로 내부적으로 이미 생성해두는데 테스트에서 이를 접근할 권한이 없기 때문이다. 해당 자원의 다형성을 활용하거나 간단한 테스트를 위해서는 의존 객체를 주입하는 방법이 효과적이다. 이는 DIP를 활용하는데도 효과적이다.

의존 객체 주입

의존성 주입이라고 하며, Java의 경우 Spring의 도움을 받으면 굉장히 편하게 사용할 수 있다. 그 이유는 의존성 주입의 경우 매번 인스턴스를 생성해서 관리해야하는데 spring의 경우 IOC 컨테이너에서 bean을 활용해 프레임워크가 인스턴스를 생성, 관리하기 때문이다. 무조껀적인 의존 주입도 좋지 않다. 그러나 어느정도 규모가 있는 자원을 활용한다면 의존 주입이 효과적이고 테스트도 쉽다. 그 이유는 해당 의존 객체를 Mocking하면 그 부분을 제외하고 단위 테스트를 수행할 수 있기 때문이다.

profile
엘 프사이 콩그루

0개의 댓글