Čau,
dělám na projektu, kde v podstatě pravidelně nějaké API volá samo sebe. Abych to zasadil trochu do konkrétníého rámce, tak jedná se o serverové komponenty psané ve Springu a tím api myslím Service layer.
Považuji Service layer za API k aplikaci. A DAO layer za API k datům. A REST layer za API k Service API.
Představte si REST layer - dovedete si představit, že by nějaká REST metoda volala nějakou jinou REST metodu v te same komponentě? Já teda ne a považoval bych to za naprostou prasárnu. Tak proč nějaká Service, volá nejakou jinou Service? Service layer by mělo být to pravé API k aplikaci, které je oproštěno od čehokoliv co se děje na RESTu.
Stejně tak DAO. DAO by měla být nějaká třída práce s Daty a DAO tvoří svůj vlastní layer. Tím je vlastně DAO rovněž API, ale k Datům. Není proto možné, aby jedno DAO volalo nějaké jiné DAO ze stejné vrstvy a co je ještě horší, není možné aby nějaké DAO volalo nějakou Service.
Neříkám to proto, že jsem nějaký hnidopich, ale proto, když vidím ,jaký je na projektech bordel v implementaci bussiness logiky. Business logika takovéto typické serverové komponenty je něco, co se dá nejlépe zapsat pomocí BPMN grafu. Tak prosim vás, pokud nechcete, aby vás nahradili klikači BPMN obrázků, ze kterých se potom bude generovat přehledný kód, do kterého nikdo z vás nebude moct zasahovat, protože by jste ho akorát zprasili, TAK SE NAUČTE PROGRAMOVAT!