Содержание

Проработать

    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 bean life cycle
  42. Как работает @Lazy в Spring — и когда он полезен
  43. Spring vs Spring Boot - разница
  44. Вопросы
  45. Собеседование по Java EE — Spring Framework (вопросы и ответы). Часть 1
  46. 75 вопросов и ответов на собеседование по Spring
  47. Spring MVC

  48. Spring MVC — основные принципы
  49. Spring’s RequestBody and ResponseBody Annotations
  50. web.xml и маппинг сервлетов
  51. Изучаем ResponseEntity и избавляемся от него в контроллерах Spring
  52. Spring MVC — загрузка файла с валидацией
  53. Разработка интернет-магазина на Spring Framework
  54. Top 10 Spring Boot REST API Best Practices You MUST Know
  55. Ускорение Spring REST API на 200%
  56. Метрики

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

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

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

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

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

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

  84. Exchange method of Spring RestTemplate - Part 1 || Calling REST API using RestTemplate
  85. Testcontainers

  86. Testcontainers: тестирование с реальными зависимостями
  87. Введение в Testcontainers. Прокачиваем интеграционные тесты.
  88. Testcontainers Интеграционные тесты для баз данных
  89. Embedded Servlet

  90. Comparing Embedded Servlet
  91. Logging

  92. Logging in Spring Boot
  93. Ведение журнала в Spring Boot
  94. DB connection

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

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

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

  102. Коли прод росте на 1000% | Виклики на Різдво | Java: Про ІТ під каву - #49
  103. Throttling - процесс лимитирования обработки запросов за определенное время Разобрать возможности тротлинга на spring.
  104. Implementing Throttling in Java (Spring Boot)
  105. How to Implement Request Throttling for High-Traffic APIs in 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(Spring stereotypes):

  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 реализацию, вместо БД.

Метрики

Java metrics + Grafana - это обычно связка инструментов для сбора, хранения и визуализации метрик работы Java-приложения.

Метрики — это числовые показатели состояния приложения и JVM (например, использование памяти, загрузка CPU, количество потоков, задержки запросов).

В Java их часто собирают с помощью библиотек:

Примеры метрик:

Как Grafana вписывается

Grafana сама по себе данные не собирает, а только строит дашборды и графики.

Java приложение → Micrometer / JMX → Prometheus (или InfluxDB) → Grafana