Pytanie mam odnośnie springa mvc, załóżmy, że mam klasę Dodawanie, która ma jedną metodę dodaj(int x, int y) i moje pytanie brzmi jak powinno się do niej dobrać.
Myślę tak: mamy sobie formularz na stronie z polami do wpisywania tych pól (x, y) po "submit" dane lecą do kontrolera. i tu właśnie nie wiem jak zrobić.
Oczywiście wiem, że mogę w kontrolerze zrobić Dodawanie d = new Dodawanie(); d.dodaj(x, y); ale nie jest to ładne wyjście bo nie od tego jest kontroler.
czym mam stworzyć jakiś service (tak jak w przypadku komunikacji z obiektami DAO) czy może inaczej się to rozwiązuje.
0
1
Do takiego przypadku wypadało by zrobić z tej klasy serwis i pobrać go tam gdzie chcesz poprzez jakiś kontener lub wstrzyknięcie zależności, nie znam springa ale pewnie daje takie możliwości :)
0
Serwis wstrzyknięty do kontrolra.
0
Generalnie pełna architektura warstwowa wygląda tak:
-----------------------------------------------------------|---------|
JavaScript w przeglądarce | |
-----------------------------------------------------------| |
Controlery generujące HTML | Controlery do API (HTTP/JSON) | |
-----------------------------------------------------------| model |
Usługi | danych |
--------------------------------------| i |
| inne komponenty | DTO |
-----------------------------------------------------------| |
Repozytoria | |
-----------------------------------------------------------|---------|
Możliwe uproszczenia:
- API możesz wystawić bezpośrednio z usług bez osobnych kontrolerów jeżeli serializacje i deserializacje ogarniesz adnotacjami, nie masz jakiś większych wymagań projektowych odnośnie integracji i nie będziesz w nich wykorzystywał bezpośrednio obiektów związanych z servletami,
- oddzielne DAO są według mnie zbędne jeżeli korzystasz z czegoś tak grubego jak JPA; Spring Repositories - trochę polepszają pracę z JPA ale czasem nie pasują do niektórych projektów
PS. Niektóry wypuszczają po za usługi tylko DTO ale wtedy rośnie Ci podwójna hierarchia obiektów - jedna odzwierciedlająca model danych w DTO w skali niemal 1:1