Spring Flashcards

1
Q

Что такое Spring Framework?

A

Spring — это популярный Java-фреймворк для разработки приложений на основе Java, который предоставляет обширные возможности для внедрения зависимостей (DI), управления транзакциями, веб-разработки, обработки данных и интеграции с различными технологиями.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое Inversion of Control (IoC) в контексте Spring?

A

IoC — это принцип, согласно которому управление зависимостями объекта передаётся внешнему контейнеру (например, Spring Container). В Spring IoC реализован через внедрение зависимостей (DI), когда зависимости передаются объекту извне, а не создаются внутри объекта.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какие виды внедрения зависимостей существуют в Spring?

A
  • Через конструктор: зависимости передаются через параметры конструктора.
  • Через сеттеры/геттеры: зависимости устанавливаются через методы.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое Spring Container?

A

Spring Container управляет жизненным циклом объектов (бинов) и их зависимостями. В основном, это ApplicationContext, который загружает конфигурации и управляет созданием бинов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое Bean в Spring?

A

Bean — это объект, который управляется Spring Container. Бины создаются, конфигурируются и уничтожаются контейнером, а также используются в приложении.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как зарегистрировать Bean в Spring?

A

= Через аннотацию @Bean: используем в конфигурационном классе для создания бина.
= Через аннотацию @Component: используется на уровне класса для автоматического определения бина.
= Через XML-конфигурацию (менее распространено в современных приложениях).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое @Autowired?

A

@Autowired — это аннотация, которая используется для автоматического внедрения зависимости в класс. Spring Container ищет подходящий бин для инъекции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как работает аннотация @Component?

A

Аннотация @Component указывает Spring, что данный класс должен быть автоматически обнаружен и зарегистрирован как бин в контексте при сканировании пакетов. Также есть специализированные аннотации:
@Controller
@Service
@Repository

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Чем отличается @Component от @Bean?

A

@Component: используется для автоматического обнаружения и создания бинов при сканировании классов.
@Bean: используется для явного создания бина в конфигурационных классах.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое AOP в Spring?

A

AOP (Aspect-Oriented Programming) — это парадигма программирования, которая позволяет разделять сквозные задачи (например, логирование, безопасность, управление транзакциями) от бизнес-логики. В Spring это реализовано через аспекты и аннотации.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое Pointcut и Advice в AOP?

A

Pointcut: выражение, которое определяет, на какие методы или классы будет применяться аспект.
Advice: это действие, которое выполняется при достижении точки соединения (join point), например до или после вызова метода.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Какие типы Advice существуют в Spring AOP?

A

Before: выполняется до метода.
After: выполняется после метода.
Around: выполняется до и после метода.
AfterReturning: выполняется после успешного завершения метода.
AfterThrowing: выполняется после выброса исключения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как использовать аннотацию @Aspect?

A

Аннотация @Aspect используется для обозначения класса как аспекта в Spring AOP. Для этого нужно также включить обработку аспектов с помощью аннотации @EnableAspectJAutoProxy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как управлять транзакциями в Spring?

A

Spring предоставляет управление транзакциями через аннотацию @Transactional. Эта аннотация указывает, что метод или класс должны выполняться в транзакции, и в случае исключений транзакция будет откатана.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Какие уровни изоляции и распространения транзакций существуют в Spring?

A

Уровни изоляции: READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE.
Типы распространения (propagation): REQUIRED, REQUIRES_NEW, SUPPORTS, NOT_SUPPORTED и другие.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое Spring Security?

A

Spring Security — это фреймворк для обеспечения безопасности приложений. Он поддерживает аутентификацию и авторизацию, шифрование, защиту от CSRF и другие механизмы безопасности.

17
Q

Что такое Spring Boot?

A

Spring Boot — это расширение Spring Framework, которое упрощает создание и настройку приложений Spring. Оно предоставляет автоматическую конфигурацию (auto-configuration), встроенные веб-серверы (например, Tomcat) и удобный механизм сборки приложений.

18
Q

Что такое “стартеры” в Spring Boot?

A

Spring Boot “стартеры” — это наборы зависимостей для разных целей, например, spring-boot-starter-web для создания веб-приложений или spring-boot-starter-data-jpa для работы с базами данных через JPA.

19
Q

Как Spring Boot упрощает настройку приложения?

A

Spring Boot использует концепцию автоматической конфигурации, что позволяет избежать необходимости ручной настройки большинства аспектов приложения. Многие компоненты конфигурируются автоматически на основе наличия зависимостей в класспате.

20
Q

Как управлять конфигурациями в Spring Boot?

A

Конфигурации управляются через файлы application.properties или application.yml, где можно задавать порты, базы данных, параметры безопасности и другие настройки.

21
Q

Как реализовать обработку ошибок в Spring MVC?

A

Spring предоставляет аннотацию @ExceptionHandler для обработки исключений на уровне контроллера. Кроме того, можно создать глобальный обработчик ошибок с помощью аннотации @ControllerAdvice.

22
Q

Как настроить CORS в Spring Boot?

A

CORS (Cross-Origin Resource Sharing) можно настроить через аннотацию @CrossOrigin на уровне контроллера или глобально через WebMvcConfigurer.

23
Q

Что такое Spring Data JPA?

A

Spring Data JPA — это часть Spring Data, которая упрощает работу с базами данных через JPA (Java Persistence API). Она предоставляет интерфейсы для CRUD операций и позволяет создавать сложные запросы с использованием методов на основе имени.

24
Q

Как реализовать кеширование в Spring?

A

Spring поддерживает кеширование через аннотацию @Cacheable. Она используется для сохранения результата метода в кэше и последующего возврата его при аналогичных запросах.