2017-09-25 7 views
1

Java EE에서 각 서비스에 대한 인터페이스를 갖는 것이 좋은 (그리고 흔한) 습관입니까? 서비스가 어떤 메소드를 구현해야 하는지를 지정하는 인터페이스 외에 다른 장점은 무엇입니까?Java EE에서 서비스를위한 인터페이스를 제공하는 것의 편

예 : 일부 클라이언트 LIB 또는 API의 형태로 인터페이스를 공유하려고하지 않는 한

public interface UserService { 
    public User findUser(String username, String password); 
} 

@Stateless 
public class UserServiceImpl implements UserService { 

    public User findUser(String username, String password) { 
     // some code 
    } 
} 

답변

0

, 다음을 사용하지 마십시오. 단일 모듈 내에서 사용하는 것은 의미가 없습니다. 최신 Java EE 버전은 간단하고 단순한 코드를 강조합니다. 코드가 적을수록 좋습니다. 주목할만한 예외는 CDI 대안이다. 그러나 특별한 유스 케이스인데, 예전 자바 ee 패턴 인 interface-impl과는 아주 다르다. Java 기반 클라이언트가있는 경우 JAXRS 끝점 정의가 유일한 예외입니다. 그런 다음 Rest 인터페이스와 DTO를 API 모듈에 넣고 클라이언트와 백엔드 서비스 공급자 (마이크로 서비스 통신 또는 프론트 엔드 백엔드)간에 공유하는 것이 유용합니다. 하지만 클라이언트가 자바가 아니라면, 그걸 신경 쓰지 말고 단지 빈 자체에 주석을 달아주세요.

+0

동일한 모듈에있는 경우 인터페이스를 사용하여 servicen을 사용하는 두 가지 방법을 정의 할 수 있지만이 경우 두 개의 인터페이스가 있습니다. – bilelovitch

+0

그렇다면 OP의 예를 들어 보면, 표준 단일 ejb 모듈 + war 모듈을 가진 EAR을 가지고 있다면 war 모듈의 ejb 모듈에 정의 된 UserServiceImpl을'@ EJB'로 직접 삽입 할 수 있습니까? – Al1

+1

@ Al1 예 (적어도 JEE7에서) EJB를'SomeServiceImpl' - 단지'SomeService'라고 이름 지어서는 안됩니다. 솔직히 현대 Java EE 응용 프로그램의 코드베이스는 멋지게 보입니다. 특히 이전의 혼란과 비교할 때 더욱 그렇습니다. – yntelectual