Spring Flashcards

1
Q

IoC, DI

A

IoC (Inversion of Control) - это принцип, при котором поток выполнения программы контролируется фреймворком. Используется для уменьшения зацепления. Фреймворк с помощью callback-ов вызывает пользовательский код, как следствие потеря контроля над потоком исполнения - Инверсия управления.
DI (Dependency Injection) - внедрение зависимостей - это реализация принципа IoC в применении к управлению зависимостями.

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

Типы бинов

A

@Component
@RestController (@Controller)
@Repository
@Service

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

Способы устранения циклических зависимостей

A
  1. Провести рефакторинг архитектуры.
    Циклические зависимости обычно являются признаком неправильного проектирования. Пересмотрите структуру классов и разделите обязанности. Например, выделите общую функциональность в третий бин.
  2. Использовать @Lazy
    Аннотация @Lazy откладывает инициализацию зависимости до момента её фактического использования. Это полезно, если зависимость не нужна на этапе запуска приложения.
  3. Использовать внедрение через @PostConstruct или setters
    Можно использовать setter-методы для установки зависимостей после создания объекта.
  4. Использовать ApplicationContext
    Если невозможно устранить цикл другим способом, можно внедрить зависимости вручную через ApplicationContext.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Жизненный цикл бина

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

Этапы инициализации контекста

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

Способы создания бинов

A
  1. XML
  2. Через аннотации (@Component, @Service, @Repository)
  3. Через код (@Bean)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Способы внедрения бина

A
  1. Через поля (@Autowired) Преимущества: простота реализации. Недостатки: сложность тестирования (нужно использовать Reflection для подмены зависимостей в тестах). Нарушение инкапсуляции.
  2. Через конструктор. Преимущества: Иммутабельность (зависимости можно задать только один раз). Лёгкость тестирования.
    Недостатки: Если слишком много зависимостей, конструктор становится сложным.
  3. Через setter. Преимущества: Поддержка необязательных зависимостей, зависимости можно подменять в runtime
    Недостатки: Объект может быть создан без всех зависимостей, что нарушает целостность, делает объект изменяемым
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Скоупы бинов, как определить свой scope

A
  1. Singleton
  2. Prototype
  3. Request
  4. Session
  5. Application
  6. Websocket
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие паттерны используются в Spring Framework

A

IoC, DI
Factory
Singleton
Proxy
Template
Dao
Context Object
Observer
Front Controller
MVC
View Helper
(Написать примеры)

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

Антипаттерны

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