2
應該如何區分版本庫和服務?恕我直言客戶端(例如控制器)應首先使用服務層而不是存儲庫,因爲它應該與持久性實現分開。單個存儲庫應該只提供一個實體的訪問方法,而Service的方法能夠提供更復雜的操作,包括使用多個存儲庫。如何區分版本庫和服務層
但是如何處理豐富的存儲庫,它不僅提供了CRUD方法,而且還提供了更多,例如來自Spring Data的JPARepository?在這樣的實現中,有很多可能的獲取對象的方法在Service中複製它們並不酷。
那麼這個問題的解決方案是什麼?在這樣的服務層
A.重複方法
@Service
class XService{
@Autowired
private XRepository repository;
public List<X> findAll(){
return repository.findAll();
}
}
B.只需用在控制器(自動裝配或訪問方法在服務)存儲庫
C.任何其他好的方法?
上面的服務只有一個包裝回購方法的方法,因爲它只是一個例子,我知道服務層應該負責業務邏輯,但我不知道如何處理這些簡單的方法 - 直接使用它們從Repository或將它們包裝在Service方法中。例如。讓我們考慮Controller方法,只需將List模型化 - 我們應該使用Repository還是將該方法包裝在Service中? –
wajs
我認爲這取決於。如果你有一個健康的服務層,但只有一些簡單的「直接訪問」方法 - 就這樣吧。我會讓服務包裝它(如果出現新的要求,還可以輕鬆更改它)。另一方面,如果你的服務層被這樣簡單,愚蠢的包裝所支配,那麼就存在一個問題。一種方式是我描述的:充實服務層。或者,如果你的應用程序非常簡單並且你希望沒有實質性的變化,那就直接去掉這些「服務」並直接使用倉庫。任何非平凡的軟件都會在一定程度上違反設計原則。 – Pyranja