Spring Core
Контейнер вместо ручной сборки приложения
В обычной Java-программе объекты часто создают через new прямо там,
где они нужны. В небольшом проекте это удобно, но по мере роста приложения связи между классами
становятся всё сложнее. Spring Core решает именно эту задачу: он создаёт объекты приложения,
связывает их друг с другом и управляет ими внутри контейнера.
В этом разделе мы разберём основу, на которой затем строятся Spring Boot, Spring MVC, работа с данными, транзакции, безопасность и другие части экосистемы Spring.
Что будет внутри раздела
- IoC и Dependency Injection. Разберём, почему объекту лучше получать готовые зависимости, а не создавать их самостоятельно.
- ApplicationContext. Познакомимся с главным контейнером Spring и увидим, как получать из него управляемые объекты.
- Spring Beans. Выясним, что именно Spring называет bean и чем такой объект отличается от обычного Java-объекта.
- Жизненный цикл Bean. Проследим путь bean от создания до уничтожения и точки, в которых Spring может выполнить дополнительную логику.
- Bean Scopes. Разберём, сколько экземпляров bean может создавать контейнер и от чего это зависит.
- Component Scanning. Увидим, как Spring автоматически находит классы приложения и регистрирует их в контейнере.
- Java Configuration. Научимся описывать конфигурацию контейнера обычным Java-кодом.
- BeanPostProcessor. Познакомимся с механизмом, который позволяет обрабатывать beans до и после их инициализации.
- События Spring. Разберём встроенный способ передавать события между частями одного приложения.
- Spring AOP. Увидим, как вынести повторяющуюся техническую логику из бизнес-кода.
- Прокси в Spring. Поймём, за счёт каких объектов Spring может перехватывать вызовы методов и добавлять дополнительное поведение.
Темы идут от базовой идеи контейнера к механизмам, которые Spring строит поверх неё. Сначала важно понять, кто создаёт объекты и как между ними появляются связи, а уже затем — как контейнер расширяет их поведение и реагирует на происходящее в приложении.