Контекст Spring: что это такое и как его создать? | OTUS >
Пока вы ждёте, скидка тает
Пока вы ждёте, скидка тает
На 15% снизили цены октябрьских курсов. Бонус действует до 4 числа
На 15% снизили цены октябрьских курсов. Бонус действует до 4 числа
Выбрать курс

Что такое контекст Spring и как его создать?

Spring_Deep_8.11-5020-366d55.png

Контекст (а у него есть даже интерфейс — org.springframework.context.ApplicationContext) — это некоторое окружение, в котором работает приложение на Spring Framework.

Страшные аббревиатуры DI, IoC — это всё про него. Собственно, контекст создаёт и хранит экземпляры классов вашего приложения, определяет их зависимости друг с другом и автоматически их задаёт.

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

Итого: Spring Context + мета-данные = работающее приложение.

Где найти контекст?

Контекст является ключевой функциональностью Spring и лежит в maven-зависимости spring-context (на момент написания — org.springframework:spring-context:5.1.4.RELEASE). Обычно эта зависимость является транзитивной для остальных проектов Spring. И если вы, например, подключаете spring-boot-starter, то она подключится автоматически, и не нужно думать про то, где её взять.

Но если вы хотите попробовать "голый" Spring, т. е. только ту часть, которая называется IoC-контейнер, то достаточно подключить лишь spring-context.

Итого: подключите org.springframework:spring-context:5.1.4.RELEASE.

Какие бывают контексты и как их создать?

У интерфейса ApplicationContext есть большое количество реализаций: — ClassPathXmlApplicationContext; — FileSystemXmlApplicationContext; — GenericGroovyApplicationContext; — AnnotationConfigApplicationContext; — и даже StaticApplicationContext; — а также некоторые другие.

Они отличаются друг от друга именно тем, каким способом задаются мета-данные и где хранится эта конфигурация. Например: — ClassPathXmlApplicationContext — метаданные конфигурируются XML-файлом(-ами) и они лежат в classpath, т. е. в ресурсах модуля; — FileSystemXmlApplicationContext — метаданные тоже конфигурируются XML-файлом(-ами), но они находятся где-то в файловой системе, например, /etc/yourapp/spring-context.xml; — AnnotationConfigApplicationContext — метаданные конфигурируются с помощью аннотаций прямо на классах.

Современным способом конфигурирования считаются аннотации (AnnotationConfigApplicationContext), дальше будем создавать именно их.

Приведём пример создания такого контекста в методе main:

    @Configuration
    @ComponentScan
    public class Main {

        public static void main(String[] args) {
            AnnotationConfigApplicationContext context =
                    new AnnotationConfigApplicationContext(Main.class);
        }
    }

Внутри конструктора как раз и происходит инициализация контекста из мета-данных. Как и полагается, в AnnotationConfigApplicationContext мета-данные конфигурируются аннотациями. Несложно заметить аннотацию @Configuration на Main-классе, и что он передаётся в конструктор контекста. Собственно, Main и есть описание метаданных.

Итого: создаём контекст.

В результате мы получили работающее приложение на Spring. Правда, пока ещё без бизнес-логики. А что же означает аннотация @ComponentScan, и как правильно определять и писать бины, мы узнаем в следующей части.

Следите за новостями, оставляйте комментарии и посмотрите программу курса «Разработчик на Spring Framework», вдруг захочется погрузится полностью!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
4 комментария
0

Здравствуйте Юрии, правильно ли я понял что IoC-контейнером в нашем случае будет выступать Spring context и бины в нем?

-1

Здравствуйте, Евгений! Да, именно так)

0

Добрый день. Юрий, могли бы подсказать в чем разница между IOC (Inversion of Control) и Application Context? За ранее огромное спасибо

0

IoC - это всего лишь концепт. Передача контроля за созданием объектов от нашего кода кому то еще. IoC контейнеров десятки, и одним из них является тот самый Application Context спринга. Который, в свою очередь содержит имплементацию собственно контейнера отвещающего за IoC - Bean Factory. Как то так. Если что то пропустил, Юрий поправит.

Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
Пока вы ждёте, скидка тает
Пока вы ждёте, скидка тает
На 15% снизили цены на все курсы до 4 октября
На 15% снизили цены на все курсы до 4 октября