Идемпотентность означает, что
Способы реализации:
—
—
—
—
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2👏1🌚1
Propagation (передача транзакции) — политика того, как метод с аннотацией @Transactional будет взаимодействовать с существующей транзакцией.
Виды:
▪️
▪️ REQUIRES_NEW:
▪️
▪️ MANDATORY:
▪️
▪️ NESTED:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2🔥1👏1
DispatcherServlet — это
Он принимает все входящие
🔹 При получении запроса он:
— Определяет нужный
— Передаёт выполнение
— Обрабатывает результат с помощью
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🔥1
Lazy Initialization — это подход, при котором
Такой подход экономит
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1
Проблема N+1 возникает при работе с
Если у нас 100 пользователей, выполнится
Решения:
🔹
@Query("SELECT u FROM User u JOIN FETCH u.orders")
List<User> findAllWithOrders();🔹
@EntityGraph(attributePaths = {"orders"})
List<User> findAll();🔹
@BatchSize(size = 10)
private List<Order> orders;
Выбор решения зависит от конкретной ситуации: для единичных запросов подходит JOIN FETCH, для повторяющихся паттернов - EntityGraph или Batch Size.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4❤3
Есть Spring Boot приложение с несколькими @Configuration классами, и в них определены бины с одинаковыми именами. Что произойдет при старте приложения и как разрешить конфликт?
🔹 Ответ:
Spring
Если нужно разрешить конфликт, есть несколько путей:
— Использовать
— Использовать
— Использовать
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1🤔1
Spring использует
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1👏1
Spring Profiles — это механизм в Spring, который позволяет
С их помощью можно
Типичный пример —
Профиль можно указать:
—
—
—
Это обеспечивает чистое разделение конфигураций и снижает риск ошибок при деплое.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥2
@Transactional на классе задаёт
Аннотация на методе
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥1
Spring ищет бины с помощью
Сканирование начинается с пакета,
Если бин не помечен аннотацией, его можно зарегистрировать вручную через
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥4👏1
Технически —
Разница
→ @Component —
→ @Service —
→ @Repository —
@Repository имеет дополнительную функцию:
Использование правильной аннотации улучшает читаемость и показывает роль класса в архитектуре.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9❤1👏1
@Conditional позволяет регистрировать бин только при
@Bean
@Conditional(WindowsCondition.class)
public Service windowsService() {
return new WindowsService();
}
class WindowsCondition implements Condition {
public boolean matches(ConditionContext context,
AnnotatedTypeMetadata metadata) {
return System.getProperty("os.name")
.contains("Windows");
}
}
Spring Boot предоставляет готовые: @ConditionalOnProperty, @ConditionalOnClass, @ConditionalOnMissingBean.
Мощный инструмент для гибкой конфигурации под разные окружения.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤1👏1
@Qualifier используется для
Без @Qualifier Spring не знает,
@Bean
@Qualifier("primary")
public DataSource primaryDB() { ... }
@Bean
@Qualifier("secondary")
public DataSource secondaryDB() { ... }
@Autowired
@Qualifier("primary")
private DataSource dataSource;
Альтернатива — использовать
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4👏2
readOnly = true — это
Что происходит:
—
—
—
Важно: это
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2❤1👏1
Propagation определяет, как транзакция
Основные типы
— REQUIRED (default):
— REQUIRES_NEW:
— MANDATORY:
— NEVER:
— SUPPORTS:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1👏1
@RestController — это
Без @RestController пришлось бы
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1👏1
@Autowired — это аннотация Spring Framework для автоматического внедрения зависимостей. Она может применяться к конструкторам, сеттерам, полям и методам.
Начиная с Spring 4.3, если у класса один конструктор, @Autowired можно
Порядок разрешения зависимостей:
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1👏1
@Cacheable
Требует
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥2👏1
Actuator предоставляет production-ready функции для
Эндпоинты:
→
→
→
→
Можно создавать кастомные эндпоинты. Важно: закрывайте чувствительные эндпоинты в production через Spring Security.
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👏2❤1🔥1
Spring Data JPA — это
Вместо написания DAO вручную, создаёте интерфейс, и Spring генерирует реализацию.
Поддерживает:
—
—
—
—
#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👏2❤🔥1❤1🔥1