2017-06-20 74 views
0

我需要一個通用存儲庫,以便在必要時擴展和實現特定的行爲。例如,我將使用CrudRepository的一半方法,但是如果我從這個存儲庫擴展,我會暴露其他不必要的方法。更好地使用自定義存儲庫而不是使用Spring數據存儲庫(CrudRepository,PagingAndSortingRepository)?揭露不必要的方法呢?彈簧數據內置存儲庫或自定義

+0

爲什麼不創建一個接口類型,其底層實現利用內置的Spring存儲庫調用,但隱藏對不需要的Spring調用的訪問? – anon58192932

+0

這就是問題,是從Spring內置的存儲庫擴展的更好的實踐嗎? –

+0

一般而言,如果您希望在不更改現有功能的情況下向其中添加其他功能,則可以從類中擴展。如果你想調整一個類的訪問方式,那麼你正在改變這個類的接口。這是接口類型的用途。 – anon58192932

回答

-1

interface MySpringRepoType

public class RepoImpl extends SpringRepository implements MySpringRepoType

如果你訪問原始類型RepoImpl,你將有權訪問所有你不想要的SpringRepository類,但是如果你訪問接口類型MySpringRepoType那麼只有接口定義的函數應該對調用者可見。這將允許你'隱藏'你不希望別人看到的任何Spring功能。