2014-11-05 2 views
3

먼저, 필자는 약간의 독서를했으며 인터페이스 및 구현 클래스 (예 : 데이터 액세스 개체 (DAO))의 목적이 무엇인지 궁금합니다. 나는 그것이 유연성을 증가 시킨다는 것을 읽었지 만, 누군가 우리가 인터페이스가 필요한 이유에 대한 구체적인 예를 제공 할 수 있는지 궁금해하고 있었다.스프링 자동 와이어 - 인터페이스 및 구현 DAO 클래스가 필요합니까?

우리가 autowiring하는 경우에도 인터페이스를 구현하는 인터페이스와 구현을 사용해야합니까? 그렇다면 왜? 우리는 단지 impl을 필요로합니까?

미리 감사드립니다.

+0

@ NathanHughes는 스프링 데이터 호출 SQL 패키지 저장 프로 시저를 사용할 수 있습니까? 인터페이스를 사용하는 목적이 무엇인지 궁금합니다. 지금까지 그것은 나에게 여분의 코드처럼 보입니다. – Alan

+0

예, JPA 및 JPQL. http://stackoverflow.com/q/3572626/217324 –

+0

클래스에 대한 인터페이스 (DAO의 경우도있을 수 있음)를 정의하면 종속성 주입에 도움이됩니다. "동등한"기능을 제공하는 다른 클래스를 주입하려면 인터페이스를 사용하면 실제로 도움이됩니다. 다른 프레임 워크 나 다른 리포지토리 DB에 대해 DAO를 사용할 수 있으며 삽입 방법을 선택할 수 있습니다. @Nathan Hughes 맞아, 스프링 데이터가 당신에게 impl을 제공하지만, 필요하다면 약간의 구현을 제공 할 수있다. – Xstian

답변

1

엄격하게 이 필요하지 않습니다. 인터페이스가입니다. 그러나 그들을 선호하는 두 가지 이유가 있습니다 : 당신은 쉽게 테스트 목적 구현을 ​​바꿀 수

  • 프록시 - 보내고 관점 지향 프로그래밍 또는 이와 유사한의 목적을 위해 콩은 쉽게 (자바가 밖으로을 지원합니다 상자)

다른 이유가 추가 될 수 있지만, 내 생각에 주요 2입니다. 그래도 그런 식으로 일하도록 강요 당하지 마십시오. 현재 진행중인 사례가 이러한 유연성을 보장하지 않는다면 상황을 복잡하게 할 필요가 없습니다.

그리고 반드시 never call your classes *Impl. 구현을위한 적절한 이름을 찾을 수 없다면, 인터페이스를 시작하지 않아야 함을 의미합니다.

관련 문제