Spring - это самый распространенный фреймворк для написания Java приложений.
Первая версия вышла еще в далеком 2003 году, после чего Spring претерпел очень много изменений и стал по-настоящему монструозным. Это повлекло разбиение его на множество отдельных модулей, которые будут разобраны в курсе:
1. Spring Core - ядро фреймворка, на чем держатся все остальные модули. Именно с него и начнется изучение этого курса, а именно с таких понятий и определений как инверсия управления (Inversion Of Control) и внедрение зависимостей (Dependency Injection).
2. Spring Boot - это тот же Spring, просто с возможность автоконфигурирования модулей. И это действительно упростило работу с таким монструозным фреймворком и без него не пишется ни одно современное Spring приложение.
3. Spring Test - каждое приложение должно быть хорошо покрыто разными уровнями тестирования, и этот модуль предоставляет функционал для этого, поднимая Spring Context и сразу добавляя необходимые зависимости в проект.
4. Spring Data - модуль для работы с самыми распространенными базами данных, как реляционные, так и нереляционные (NoSQL)
5. Spring Web - написание именно веб приложений, ведь в текущий момент времени все приложения общаются друг с другом по сети, поэтому Web - это неотъемлемая часть изучения каждого разработчика.
6. Spring Security - работа по сети заставляет улучшать авторизацию и аутентификацию в приложении, повышать его безопасность, а значит необходимо готовое решение из коробки, что и предоставляет нам Spring в виде модуля Security.
7. Spring AOP - существует очень много сквозной логики, которая не несет смысловой нагрузки в понимании бизнес логики приложений, но тем не менее должна присутствовать везде - это логирование, управление транзакциями, Proxy и т.д.
Для этого и был создан модуль Spring AOP и новый подход в выносе сквозной логики - это аспектно-ориентированное программирование.И все это - только часть того, что предоставляет Spring и его экосистема, ведь в нем собраны и другие модули для работы с Cloud, Message Brokers, Reactive, Batch, Mobiles, etc.
Для успешного понимания и прохождения всего курса необходимо хорошее понимания Java Core, работа с сетями HTTP. Servlets, работа с базами данных SQL и Hibernate, тестирование приложений JUnit5, и автоматизированной сборки проекта Gradle.