Содержание

Проработать

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

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

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

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

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

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

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

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

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

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

  89. Comparing Embedded Servlet
  90. Logging

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

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

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

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

  101. Коли прод росте на 1000% | Виклики на Різдво | Java: Про ІТ під каву - #49
  102. Throttling - процесс лимитирования обработки запросов за определенное время Разобрать возможности тротлинга на spring.
  103. 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 реализацию, вместо БД.