Содержание

Проработать

    Basic

  1. Евгений Борисов - Spring
  2. Максим Добрынин | ex. Jetbulb
  3. Spring Framework. Бины
  4. Spring Framework. Жизненный цикл
  5. 10 Spring and Spring Boot Common Mistakes You Need To STOP
  6. Spring MVC — Hello World, пример приложения.
  7. Spring Framework - The Basics
  8. Введение в Spring, или что делать, если по всему проекту @Autowired и @Component, а вы не понимаете, что это
  9. Spring Framework Guide
  10. Как писать на Spring в 2017
  11. Bean scopes
  12. Dependency Injection и Spring
  13. Spring изнутри. Этапы инициализации контекста
  14. Spring для ленивых. Основы, базовые концепции и примеры с кодом. Часть 2
  15. Обратная сторона Spring
  16. Обзор модулей Spring для Java
  17. Injecting Prototype Beans into a Singleton Instance in Spring
  18. Внедрение зависимостей через поля — плохая практика
  19. Spring: вопросы к собеседованию
  20. 01 - Spring. Введение
  21. Spring для ленивых. Основы, базовые концепции и примеры с кодом. Часть 1
  22. Как использовать аннотацию @Lookup
  23. Краткое введение во внедрение зависимостей: что это и когда это необходимо использовать
  24. Основы внедрения зависимостей
  25. Spring: в поисках контекста
  26. Евгений Борисов — Spring-потрошитель, часть 1
  27. Урок 2: Введение в Spring IoC контейнер
  28. Обработка исключений в контроллерах Spring
  29. Spring-потрошитель: жизненный цикл Spring Framework
  30. Введение в Spring Boot: создание простого REST API на Java
  31. Java, реактивное программирование, Reactor, Spring Cloud Function, Streams, etc…
  32. 1.1 Реактивное программирование в действии
  33. Что мы делаем не так со Спрингом
  34. Дополнительные возможности ApplicationContext
  35. Spring – лучший Java фреймворк для создания веб-приложений
  36. Learn Spring Fundamentals for Beginners - Full Course
  37. 6 способов выполнения метода при старте Spring Boot приложения
  38. Spring Boot ПОЛНЫЙ курс для начинающих [2025]
  39. Spring Framework. Введение
  40. Spring БАЗА 3 часа | Полный гайд
  41. Spring vs Spring Boot - разница
  42. Вопросы
  43. Собеседование по Java EE — Spring Framework (вопросы и ответы). Часть 1
  44. 75 вопросов и ответов на собеседование по Spring
  45. Spring MVC

  46. Spring MVC — основные принципы
  47. Spring’s RequestBody and ResponseBody Annotations
  48. web.xml и маппинг сервлетов
  49. Изучаем ResponseEntity и избавляемся от него в контроллерах Spring
  50. Spring MVC — загрузка файла с валидацией
  51. Разработка интернет-магазина на Spring Framework
  52. Метрики

  53. Сбор метрик Spring Boot приложения c помощью Prometheus и Grafana
  54. Мониторинг с Grafana. Best practices
  55. Error handling

  56. Як правильно робити Error handling по Clean Code
  57. Кеширование

  58. Кеширование в Spring Framework 3.1
  59. Кеширование данных — Java Spring
  60. Java Spring Boot [2024] Part 11: Cache
  61. @Cache Spring
  62. HikariCP - подключаемый пул соединений на Spring

  63. HikariCP — самый быстрый пул соединений на java
  64. Настройка пула соединений Hikari с помощью Spring Boot
  65. About Pool Sizing
  66. Spring Security

  67. Основы работы с Spring Security
  68. Подключаем Spring Security к новому проекту - Break IT
  69. Spring Security Architecture Explained
  70. Аутентификация - Spring Security в деталях
  71. API Authentication & Security - Java: Про ІТ під каву - #7
  72. Виды авторизации: сессии, JWT-токены. Для чего нужны сессии? Как работает JWT? (+ разбор ошибки)
  73. Аутентификация в Веб-Приложениях 👨‍💻JWT и Сессии
  74. JWT. Часть 1. Теория
  75. JWT как строить архитектуру
  76. Security со Spring Boot 3.1 | Авторизация и Аутентификация
  77. Spring Cloud

  78. Использование Spring Cloud для микросервисов на Spring Boot
  79. REST Requests

  80. Exchange method of Spring RestTemplate - Part 1 || Calling REST API using RestTemplate
  81. Testcontainers

  82. Testcontainers: тестирование с реальными зависимостями
  83. Введение в Testcontainers. Прокачиваем интеграционные тесты.
  84. Testcontainers Интеграционные тесты для баз данных
  85. Embedded Servlet

  86. Comparing Embedded Servlet
  87. Logging

  88. Logging in Spring Boot
  89. Ведение журнала в Spring Boot
  90. DB connection

  91. JOOQ – разбираем Java-библиотеку | SoftTeco Meetup
  92. JOOQ — не замена Hibernate. Они решают разные проблемы
  93. Реактивного программирования

  94. Основы реактивного программирования на Java, лекция 1
  95. АОП

  96. АОП в Spring Framework
  97. Продуктивность

  98. Коли прод росте на 1000% | Виклики на Різдво | Java: Про ІТ під каву - #49
  99. Throttling - процесс лимитирования обработки запросов за определенное время Разобрать возможности тротлинга на spring.
  100. Implementing Throttling in Java (Spring Boot)

Что это:

Spring Framework - один из самых популярных наборов фреймворков для создания веб-приложений на Java.

Spring projects:

REST Requests

Transaction

Spring Transaction

BD connection

JOOQ

JOOQ - создает сущности на основе БД, путем подключения и получения необходимых данных.

Для запуска необходима заполненная БД.

Logging

Логирование через Lombok

Validation в Spring-boot

Hibernate validation

Тестирование

Testing

Bean scope:

  1. singleton(by default) - определяет один единственный бин для каждого контейнера Spring IoC.
  2. prototype - любое количество экземпляров bean. Не храниться в Spring context, значит preDestroy и etc - не будут выполняться. Если он создается в singleton бине, то создан будет только 1 такой бин.
  3. request - один экземпляр bean на каждый HTTP запрос. Касается исключительно ApplicationContext.
  4. session - один экземпляр bean на каждую HTTP сессию. Касается исключительно ApplicationContext.
  5. global session - аналогичен session - он используется в портлетных веб приложениях. Когда вы используете globalSession в "стандартном" сервлетном приложении эти beans имеют scope session.

Инициализация spring контекста:

  1. XML - ClassPathXmlApplicationContext(”context.xml”). Был изначальным методом.
  2. Annotations(с указанием пакета для сканирования) - AnnotationConfigApplicationContext(”package.name”).
  3. Java configuration - AnnotationConfigApplicationContext(JavaConfig.class). конфигурация через аннотации с указанием класса (или массива классов) помеченного аннотацией @Configuration. Используется если необходимо создать bean класса, который не имеет spring аннотаций.
  4. Groovy - GenericGroovyApplicationContext(”context.groovy”)

Имена в spring контексте

  1. При создании через @Component, etc - имя bean будет использовано имя аннотированного класса.
  2. При создании через @Bean - имя bean будет использовано имя аннотированного метода.

Spring аннотации:

Controller annotations:

Аннотации для создания Bean(Annotations):

Аннотации для создания Bean(Java configuration):

Advice

Cache

Async

  1. @Async - помечает метод как асинхронный.
  2. @EnableAsync - включает поддержку асинхронного выполнения методов в Spring.

События

  1. @EventListener - подписывается на события приложения.

Другие:

АОП(AOP)

АОП(AOP) - Аспектно-ориентированное программирование. Идея АОП заключается в выделении так называемой сквозной функциональности. Помогает разделить бизнес логику примеры: логгирование, обработка исключений, трассировка, аутентификация и проверка прав доступа.

Spring bean lifecycle:

  1. Container started
  2. Bean instantiated
  3. Dependencies Injected
  4. Custom init() method
  5. Custom utility method
  6. Custom destroy() method
  1. Singleton - создаётся при старте приложения и удаляется в конце.
  2. Prototype - создаётся при вызове и удаляется GC.

Для управления созданием и уничтожением bean у нас есть методы:

  1. init-method
  2. destroy-method
  3. @PostConstruct
  4. @PreDestroy

Создание компонента:

Spring Value

Пример создания пустого List как default

@Value("${my.list.of.strings:}#{T(java.util.Collections).emptyList()}")
private List<String> myList;
    

Интерфейсы для слоев DAO и Service

Интерфейсы нужны для возможности замены реализации не затрагивая основной код. При использовании интерфейсов основной код ничего не знает об деталях реализации (слабая связанность). Соответственно, реализацию можно вынести в отдельный модуль (изолировать сложность). Если реализация отделена от основного кода, то становится легко подменить её в тестах, например, подсунуть in memory реализацию, вместо БД.