2013-05-04 2 views
1

스프링 컨텍스트에서 싱글 톤을 반환하는 전역 객체를 갖는 것이 디자인 관점에서 잘못 되었습니까?스프링 싱글 톤을 반환하기위한 전역 객체

방금 ​​새로운 장소에서 작업을 시작했으며, DAO는 모두 DAOUtils라는 글로벌 객체를 통해 액세스됩니다. 여기서 DAO는 스프링 컨텍스트에서 싱글 톤 DAO 빈을 가져옵니다. 예를 들어 구매 주문서를 저장하려는 경우

DAOUtils.getPurchaseOrderDao(). savePurchaseOrder (po);

등등.

필자는 필요에 따라 DAO를 필요로하는 각 클래스에 주입하는 데 익숙해 왔기 때문에 약간 충격을 받았습니다. 디자인 관점에서 잘못된 점이 있습니까? 그렇다면 왜 그것이 나쁜 생각인지 설명 할 수 있습니까?

실제 DAOUtils 클래스를 호출하지 못하도록하는 방법이 없으므로 단위 테스트가 어렵다는 것을 알 수 있습니다. 나는 이것이 단단한 커플 링으로 인한 문제로 설명 될 수 있다고 생각합니다.

+0

당신은 맞습니다. 의존성 주입이 무엇인지 이해하지 않고 이것을 디자인 한 사람은 Spring을 사용했습니다. –

+0

정적 도구 클래스를 사용하지 않는 것이 가장 좋고 도메인이 아닌 개체에 "new"를 사용하지 않는 것이 가장 좋습니다. –

+0

또한 Clen Code를 읽습니다. * Util 클래스를 만드는 것은 mudball에 대한 길입니다. 새로운 DAO를 클래스에 추가해야합니다. 이 Util 클래스는별로 좋지 않은 모든 DAO에 의존합니다. –

답변

4

DAOUtils를 다른 것으로 대체 할 수 없기 때문에 이것은 잘못된 디자인 패턴입니다. 테스트 목적으로.

스프링은 의존성 주입을 사용하며 이것이 DAO 인스턴스를 검색하는 가장 좋은 방법입니다.

+0

감사합니다. 도움이됩니다. – Bruce

관련 문제