Главная страница
Навигация по странице:

  • 11. Контейнеры Spring

  • Spring BeanFactory Container

  • BeanFactory – XmlBeanFactory. XmlBeanFactory

  • Spring ApplicationContext Container

  • Чаще всего используются следующие реализации AppicationContext

  • 2. ClassPathXmlApplicationContext

  • 3. AnnotationConfigApplicationContext

  • Жизненный цикл контейнера

  • Инструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми


    Скачать 0.73 Mb.
    НазваниеИнструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
    Дата13.11.2022
    Размер0.73 Mb.
    Формат файлаdocx
    Имя файла2.docx
    ТипИнструкция
    #785689
    страница9 из 26
    1   ...   5   6   7   8   9   10   11   12   ...   26

    10. Какая основная зависимость фреймворка Спринг? Почему во многих сборках она не указывается явно?


    Spring-core. Не указывается потому, что она включается, потому что включается по умолчанию в любую другую Spring – зависимость.

    11. Контейнеры Spring?


    Container создает объекты, связывает их вместе, настраивает и управляет ими от создания до момента уничтожения. Spring Container получает инструкции какие объекты инстанцировать и как их конфигурировать через метаданные: XML, Аннотации или Java код.

    Spring BeanFactory Container - это самый простой контейнер, который обеспечивает базовую поддержку DI и который основан на интерфейсе org.springframework.beans.factory.BeanFactory. Такие интерфейсы, как BeanFactoryAware и DisposableBean все еще присутствуют в Spring для обеспечения обратной совместимости.

    Наиболее часто используемая реализация интерфейса BeanFactory – XmlBeanFactory. XmlBeanFactory получает метаданные из конфигурационного XML файла и использует его для создания настроенного приложения или системы. BeanFactory обычно используется тогда, когда ресурсы ограничены (мобильные устройства). Поэтому, если ресурсы не сильно ограничены, то лучше использовать ApplicationContext.

    Spring ApplicationContext Container. ApplicationContext является более сложным и более продвинутым Spring Container-ом. Наследует BeanFactory и так же загружает бины, связывает их вместе и конфигурирует их определенным образом. Но, кроме этого, ApplicationContext обладает дополнительной функциональностью: общий механизм работы с ресурсами, распознавание текстовых сообщений из файлов настройки и отображение событий, которые происходят в приложении различными способами. Этот контейнер определяется интерфейсом org.springframework.context.ApplicationContext.

    Бины создаются при вызове метода getBean(). Бины создаются при "поднятии" контекста все сразу. Если не указана стратегия инициализации.

    Чаще всего используются следующие реализации AppicationContext:

    1. FileSystemXmlApplicationContext - Загружает данные о бине из XML файла. При использовании этой реализации в конструкторе необходимо указать полный адрес конфигурационного файла.

    2. ClassPathXmlApplicationContext - Этот контейнер также получает данные о бине из XML файла. Но в отличие от FileSystemApplicationContext, в этом случае необходимо указать относительный адрес конфигурационного файла (CLASSPATH).

    3. AnnotationConfigApplicationContext — метаданные конфигурируются с помощью аннотаций прямо на классах.

    4. GenericGroovyApplicationContext - эта конфигурация работает, по сути, так же, как и Xml, только с Groovy-файлами. К тому же, GroovyApplicationContext нормально работает и с Xml-файлом.

    Принимает на вход строку с конфигурацией контекста. Чтением контекста в данном случае занимается класс GroovyBeanDefinitionReader.

    При этом мы можем указать несколько файлов конфигурации Spring.

    По своей сути IoC, а, следовательно, и DI, направлены на то, чтобы предложить простой механизм для предоставления зависимостей компонента (часто называемых коллабораторами объекта) и управления этими зависимостями на протяжении всего их жизненного цикла.

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

    В общем случае IoC может быть расщеплена на два подтипа: инверсия управления (Dependency Injection) и поиск зависимости (Dependency Lookup). Инверсия управления — это крупная часть того, делает Spring, и ядро реализации Spring основано на инверсии управления, хотя также предоставляются и средства Dependency Lookup.

    Когда платформа Spring предоставляет коллабораторы зависимому объекту автоматически, она делает это с использованием инверсии управления (Dependency Injection).

    В приложении, основанном на Spring, всегда предпочтительнее применять Dependency Injection для передачи коллабораторов зависимым объектам вместо того, чтобы заставлять зависимые объекты получать коллабораторы через поиск.

    Жизненный цикл контейнера:

    1. Контейнер создается при запуске приложения;

    2. Контейнер считывает конфигурационные данные;

    3. Из конфигурационных данных создается описание бинов;

    4. BeanFactoryPostProcessors обрабатывают описание бина;

    5. Контейнер создает бины используя их описание;

    6. Бины инициализируются — значения свойств и зависимости внедряются в бин;

    7. BeanPostProcessor запускают методы обратного вызова (callback methods);

    8. Приложение запущено и работает;

    9. Инициализируется закрытие приложения;

    10. Контейнер закрывается;

    11. Вызываются callback methods.

    1   ...   5   6   7   8   9   10   11   12   ...   26


    написать администратору сайта