Spring Start Here 1 Flashcards
Context
- Это центральный интерфейс для предоставления конфигурации приложения. Он предоставляет базовые функции контейнера Spring.
- Место в памяти приложения, куда добавляются все экземпляры объектов, которыми должен управлять фреймворк.
- Это механизм, позволяющий Spring контролировать создаваемые вами экземпляры.
- Spring может управлять только теми объектами, которые являются частью фреймворка.
- В контекст Spring можно добавить объект любого типа
Основные функции Spring-контекста
- Создание объектов (бинов) и управление ими на основе конфигурации.
- Внедрение зависимостей (Dependency Injection) между компонентами.
- Управление жизненным циклом объектов.
- Публикация событий и поддержка обработки событий внутри приложения.
- Интеграция с внешними системами — Spring-контекст может подключаться к базе данных, внешним API, JMS, и другим сервисам.
Способы добавления бинов в контекст
- Посредством аннотации @Bean;
- Посредством стереотипных аннотаций (@Component и т.д.);
- Программно (например, при помощи XML-конфигурации).
Создание экземпляра контекста Spring
- Подключить зависимость
<groupId>org.Springframework</groupId>
<artifactId>Spring-context</artifactId>
- Добавить экземпляр контекста в main
Main {
Context context =
new xxxApplicationContext();
}
Добавление бина в контекст Spring посредством аннотации @Bean
- Определить в проекте класс конфигурации (с аннотацией @Configuration).
Он используется для описания конфигурации контекста Spring.
@Configuration
public class ProjectConfig {
…
}
- Добавить в класс конфигурации метод, возвращающий экземпляр объекта, который мы хотим добавить в контекст, и снабдить этот метод аннотацией @Bean.
@Bean
Parrot parrot() {
return new Parrot();
}
- Настроить Spring на использование класса конфигурации.
Классы конфигураций используются для создания различных конфигураций фреймворка.
Context context = new xxxApplicationContext(ProjectConfig.class);
Обращение к экземпляру класса из контекста
Parrot parrot =
context.getBean(Parrot.class);
Добавление в контекст Spring несколько бинов одного типа
Для добавления в контекст Spring несколько бинов одного типа используется несколько методов с аннотацией @Bean.
Каждому экземпляру присваивается уникальный идентификатор.
Чтобы впоследствии сослаться на этот экземпляр, нужно использовать идентификатор бина.
@Configuration
public class ProjectConfig {
@Bean
Parrot parrot1() {…}
@Bean
Parrot parrot2() {…}
@Bean
Parrot parrot3() {…}
}
Получение конкретного бина из контекста
Parrot parrot = context.getBean
(“parrot2”, Parrot.class);
Присвоение имени бину
Можно указать имя бина в аннотации @Bean в качестве атрибута name или value.
@Bean(name = “miki”);
@Bean(value = “miki”);
@Bean(“miki”).
Определение бина в качестве первичного
При наличии в контексте Spring нескольких бинов одного типа один из бинов можно сделать первичным.
Для этого используется аннотация @Primary.
Spring применяет первичный бин тогда, когда существует несколько бинов данного типа и конкретное имя не указано. Первичный бин — это просто бин, который Spring использует по умолчанию.
@Bean
@Primary
Parrot parrot2() {
return new Parrot();
}