wiem że jest ustalony model controller-service-repository,
to nie jest ustalenie, to jest pewnego rodzaju umowność: w zależności od Projektu, konfiguracji, modelowania API to jest zmienne.
Bardzo często wygląda to podobnie, ale nie jest to reguła.
Generalnie opiera się to o wzorzec MVC w springu https://www.simplilearn.com/spring-mvc-tutorial
zapraszam do lektury np. dokumentacji
https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html
Masz dokładnie objaśnione czym jest Context Aplikacji, jakie moduły posiada :)
I to nie są PAKIETY, a warstwy "layers"
https://softwareengineering.stackexchange.com/questions/337274/what-are-repositories-services-and-actions-controllers/337897|
W skrócie dla leniuszka :
W Springu funkcjonuje coś, co nazywamy stereotypami. Stereotypy to adnotacje, które dodajemy przed klasę (adnotujemy nimi klasę). Są one swego rodzaju znacznikami, które mówią Springowi, że ta klasa ma pewną specjalną funkcję. Są cztery podstawowe stereotypy:
- @Component — bazowy stereotyp, oznacza, że na podstawie tej klasy będzie utworzony bean Springa (innymi słowy: klasa ta jest zarządzana przez Spring’a, lub też cykl życia tej klasy będzie zarządzany przez Springa). Tego stereotypu używamy najczęściej do klas, które są pomocnicze i nie oferują elementów logiki biznesowej, a jedynie pomocnicze funkcje (np. konwersja między typami, jakieś wspólne elementy)
- @Service — stereotyp który wskazuje, że ta klasa jest serwisem, tzn. oferuje pewną logikę biznesową którą będziemy wykorzystywać w innych miejscach (np. kontrolerach; ogólnie w wyższych warstwach — o warstwach opowiemy sobie szerzej w przyszłości)
- @Repository — wskazuje że klasa pozwala na dostęp do danych, np. wspiera obsługę bazy danych. Adnotacje tą stosujemy np. w obiektach typu DAO, za 3 lekcje zobaczymy w jaki sposób uprości nam ona obsługę bazy danych.
- @Controller — oznaczamy nią kontrolery, tj. klasy, które będą obsługiwały zapytania wysyłane poprzez przeglądarkę od użytkowników.