Spring Flashcards
Что такое Spring Framework?
Spring — это популярный Java-фреймворк для разработки приложений на основе Java, который предоставляет обширные возможности для внедрения зависимостей (DI), управления транзакциями, веб-разработки, обработки данных и интеграции с различными технологиями.
Что такое Inversion of Control (IoC) в контексте Spring?
IoC — это принцип, согласно которому управление зависимостями объекта передаётся внешнему контейнеру (например, Spring Container). В Spring IoC реализован через внедрение зависимостей (DI), когда зависимости передаются объекту извне, а не создаются внутри объекта.
Какие виды внедрения зависимостей существуют в Spring?
- Через конструктор: зависимости передаются через параметры конструктора.
- Через сеттеры/геттеры: зависимости устанавливаются через методы.
Что такое Spring Container?
Spring Container управляет жизненным циклом объектов (бинов) и их зависимостями. В основном, это ApplicationContext, который загружает конфигурации и управляет созданием бинов.
Что такое Bean в Spring?
Bean — это объект, который управляется Spring Container. Бины создаются, конфигурируются и уничтожаются контейнером, а также используются в приложении.
Как зарегистрировать Bean в Spring?
= Через аннотацию @Bean: используем в конфигурационном классе для создания бина.
= Через аннотацию @Component: используется на уровне класса для автоматического определения бина.
= Через XML-конфигурацию (менее распространено в современных приложениях).
Что такое @Autowired?
@Autowired — это аннотация, которая используется для автоматического внедрения зависимости в класс. Spring Container ищет подходящий бин для инъекции.
Как работает аннотация @Component?
Аннотация @Component указывает Spring, что данный класс должен быть автоматически обнаружен и зарегистрирован как бин в контексте при сканировании пакетов. Также есть специализированные аннотации:
@Controller
@Service
@Repository
Чем отличается @Component от @Bean?
@Component: используется для автоматического обнаружения и создания бинов при сканировании классов.
@Bean: используется для явного создания бина в конфигурационных классах.
Что такое AOP в Spring?
AOP (Aspect-Oriented Programming) — это парадигма программирования, которая позволяет разделять сквозные задачи (например, логирование, безопасность, управление транзакциями) от бизнес-логики. В Spring это реализовано через аспекты и аннотации.
Что такое Pointcut и Advice в AOP?
Pointcut: выражение, которое определяет, на какие методы или классы будет применяться аспект.
Advice: это действие, которое выполняется при достижении точки соединения (join point), например до или после вызова метода.
Какие типы Advice существуют в Spring AOP?
Before: выполняется до метода.
After: выполняется после метода.
Around: выполняется до и после метода.
AfterReturning: выполняется после успешного завершения метода.
AfterThrowing: выполняется после выброса исключения.
Как использовать аннотацию @Aspect?
Аннотация @Aspect используется для обозначения класса как аспекта в Spring AOP. Для этого нужно также включить обработку аспектов с помощью аннотации @EnableAspectJAutoProxy.
Как управлять транзакциями в Spring?
Spring предоставляет управление транзакциями через аннотацию @Transactional. Эта аннотация указывает, что метод или класс должны выполняться в транзакции, и в случае исключений транзакция будет откатана.
Какие уровни изоляции и распространения транзакций существуют в Spring?
Уровни изоляции: READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE.
Типы распространения (propagation): REQUIRED, REQUIRES_NEW, SUPPORTS, NOT_SUPPORTED и другие.
Что такое Spring Security?
Spring Security — это фреймворк для обеспечения безопасности приложений. Он поддерживает аутентификацию и авторизацию, шифрование, защиту от CSRF и другие механизмы безопасности.
Что такое Spring Boot?
Spring Boot — это расширение Spring Framework, которое упрощает создание и настройку приложений Spring. Оно предоставляет автоматическую конфигурацию (auto-configuration), встроенные веб-серверы (например, Tomcat) и удобный механизм сборки приложений.
Что такое “стартеры” в Spring Boot?
Spring Boot “стартеры” — это наборы зависимостей для разных целей, например, spring-boot-starter-web для создания веб-приложений или spring-boot-starter-data-jpa для работы с базами данных через JPA.
Как Spring Boot упрощает настройку приложения?
Spring Boot использует концепцию автоматической конфигурации, что позволяет избежать необходимости ручной настройки большинства аспектов приложения. Многие компоненты конфигурируются автоматически на основе наличия зависимостей в класспате.
Как управлять конфигурациями в Spring Boot?
Конфигурации управляются через файлы application.properties или application.yml, где можно задавать порты, базы данных, параметры безопасности и другие настройки.
Как реализовать обработку ошибок в Spring MVC?
Spring предоставляет аннотацию @ExceptionHandler для обработки исключений на уровне контроллера. Кроме того, можно создать глобальный обработчик ошибок с помощью аннотации @ControllerAdvice.
Как настроить CORS в Spring Boot?
CORS (Cross-Origin Resource Sharing) можно настроить через аннотацию @CrossOrigin на уровне контроллера или глобально через WebMvcConfigurer.
Что такое Spring Data JPA?
Spring Data JPA — это часть Spring Data, которая упрощает работу с базами данных через JPA (Java Persistence API). Она предоставляет интерфейсы для CRUD операций и позволяет создавать сложные запросы с использованием методов на основе имени.
Как реализовать кеширование в Spring?
Spring поддерживает кеширование через аннотацию @Cacheable. Она используется для сохранения результата метода в кэше и последующего возврата его при аналогичных запросах.