Najpierw odpowiem na drugie pytanie. Niczego z powyższych. JSP od samego początku to był poroniony pomysł. Thymeleafa też się nie opłaca uczyć. Teraz, najbardziej popularny jest model REST'owy (niekoniecznie w pełni podążając za jego wazystkimi założeniami) w którym system w Springu komunikuje się po Http z np frontem napisanym w Angularze.
Odnośnie pierwszego, to przegladnalbym:
1. DI w Springu (dokumentacja Spring Context, ale rozdziały z konfiguracją w Javie, XML omijasz)
2. Spring webstarter - w tym, jak tworzyć endpointy, Http metody, PathVariables, RequestVariable, RequestBody. Do tego czym są DTO i ich mapowanie. Postman (przyjemne narzędzie, httpclient).
3. Spring Jpa - (@Repository, i ten Javowy Query Language) wykorzystuje Hibernate, w miarę spoko moduł do komunikacji z bazą danych. Do tego, przeczytalbym o dirty checking w Hibernate (żebyś się pptem nie zdziwił w niektórych przypadkach). Adnotacje do tworzenia reprezentacji obiektów które trzymasz w bazie danych (@Entity, @ManyToOne, @OneToOne, @ManyToMany, @JoinColumn, @Column etc).
Jak coś sobie jeszcze przypomnę, to napisze.