2017-09-25 112 views
1

爲Java EE中的每個服務提供接口是否是一種很好(並且常見)的做法?除了讓界面指定服務必須實現哪些方法之外,還有什麼其他好處?在Java EE中爲服務提供接口的好處

一個例子:

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

除非你打算分享一些客戶lib或API的形式的接口,那麼就不要使用它們。在單個模塊中使用它們毫無意義。最新的Java EE版本強調簡單的非模板代碼 - 代碼越少越好。值得注意的例外是CDI的替代品,但這是一種特殊用例,與interface-impl的老java ee模式截然不同。 我認爲唯一的例外是JAXRS端點定義,如果你有基於Java的客戶端。然後將Rest接口和DTO放入API模塊並在客戶端和後端服務提供者之間共享它(認爲微服務通信或前端後端)是有用的。但是,如果你的客戶端不是java,不要打擾它,只是註釋bean本身。

+0

當你在同一個模塊中時,你可以使用接口來定義兩種使用servicen的方式,但在這種情況下,你將有兩個接口。 – bilelovitch

+0

這是否意味着,如果我拿OP的例子來說,如果我有一個帶有標準單個ejb模塊+ war模塊的EAR,我可以直接用'@ EJB'將ejb模塊中定義的UserServiceImpl注入war模塊中? – Al1

+1

@ Al1是的,您可以(至少在JEE7中),請不要將EJB命名爲「SomeServiceImpl」 - 只需要「SomeService」。老實說,任何現代Java EE應用程序的代碼庫看起來都很棒,特別是當你將它與過去的混亂進行比較時。 – yntelectual

相關問題