## Spring Core
### Что такое Dependency Injection?
DI — паттерн, при котором зависимости передаются извне, а не создаются внутри объекта. В Spring реализуется через конструктор или сеттер.
### Bean scopes
— singleton — один экземпляр на контекст
— prototype — новый экземпляр при каждом запросе
— request — на HTTP-запрос
— session — на сессию
### @Component vs @Service vs @Repository vs @Controller
Все это специализации @Bean:
— @Component — generic
— @Service — business logic
— @Repository — data access
— @Controller — web
## Spring Boot
### Starter’ы
Это зависимости, которые автоматически настраивают приложение (spring-boot-starter-web, data-jpa).
### Встроенный сервер
Spring Boot использует встроенные Tomcat/Jetty/Undertow.
## Hibernate
### Entity states
— Transient — новый объект, не в Persistence Context
— Persistent — в Persistence Context, синхронизирован с БД
— Detached — отсоединён от Persistence Context
— Removed — удалён
### N+1 problem
Проблема, когда один запрос к БД порождает N дополнительных запросов. Решение: fetch join, @EntityGraph, @BatchSize.
—
**Читайте также:**