Spring Controllers and Services

-1

siamo al centro di un progetto. È un servizio REST. Ora abbiamo i controller per gestire i Requestmappings e l'inoltro ai Servizi. Un esempio concreto abbiamo un UserController, GroupController, UserService e GroupService.

Il controller utente ha come iniezione UserService e GroupController ha come iniezione GroupService. (dipendenza uno a uno)

Quando creo / aggiorno / cancella un utente, lo scenario è semplice: userControllers dice al userService e lo fa.

Ora il sistema ha molti altri controller / servizi che verranno aggiunti. Ma quello che non so è: qual è il modo migliore quando devo mescolare l'azione utente / di gruppo? Ad esempio: devo aggiungere un utente in un gruppo. Ma devo verificare che l'utente esista, che il gruppo esista e dopo aver salvato le informazioni nell'utente (Entità / DTO) che l'utente è ora porta di questo gruppo.

1) schould gestisco tutto da userController: -userService.checkUser () -groupService.checkGroup () -userService.updateUser ()

2) o schould gestisco al da userService: -userService.addUser () (nel userService quindi:   -checkUser ()   -checkGroup ()   -updateUser () )

Nella soluzione 1 ciò che non mi piace è l'iniezione di altri servizi che non appartengono agli utenti Nella soluzione 2 ho l'idea di replicare concetti esistenti sul gruppoServices ...

L'esempio sopra è solo una parte del grande quadro. Ma quello che vorrei capire è come posso progettare questa parte per non avere molta dipendenza e molta replicazione del codice?

    
posta java4fun 17.07.2014 - 14:02
fonte

1 risposta

1

Dipende da come vuoi strutturare i tuoi livelli (controller, servizio, persistenza).

Idealmente i controllori non dovrebbero interferire con tutte le logiche di business, ecco a cosa servono i servizi. L'eccezione è per i controlli di superficie (convalida, nullità, tipi).

Cerca di mantenere il Principio di responsabilità singola in mente per aiutarti a strutturare correttamente il tuo codice .

Ecco perché raccomando ciò che descrivi come soluzione 2.

    
risposta data 17.07.2014 - 14:35
fonte

Leggi altre domande sui tag