Spring Core Flashcards
Что такое Spring Framework?
Spring framework обеспечивает решения многих задач, с которыми сталкиваются Java-разработчики и организации, которые хотят создать информационную систему, основанную на платформе Java. Spring Framework всецело не связан с платформой Java Enterprise, несмотря на его масштабную интеграцию с ней, что является важной причиной его популярности.
Какие преимущества Spring Framework?
lightweight Inversion of control IoC Aspect oriented (AOP) Container MVC Framework Transaction Management Exception Handling
Какие есть модули в Spring Framework
Core -Beans -Core -Context -SpEL AOP Aspects Instrumentation Messaging Web -webSocket -Web -Servlet -Portlet Data Access/Integration -JDBC -ORM -OMX -JMS -Transaction
Какие модули Spring часть 2
IoC container - конфигурирование компонентов приложений и управление жизненым циклом Java-объектов
AOP - работает с функциональностью, которая может быть реализованна возможностями объектно-ориентированного программирования на Java без потерь
Security - конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много протоколов
Какие модули Spring часть 3
Data Access - работает с системами управления реляционными базами данных на Java платформе, используя JDBC и ORM средства
Trasaction Management - координация различных API управления транзакциями.
MVC - каркас, основанный на HTTP и сервлетах, предоставляющий множество возможностей для расширения и настройки.
Что собой представляет Core Container?
Это базовый Spring модуль, который представляет фундаментальные части функциональности Spring: IoC Beans Context Spring expression
Что такое IoC?
Инверсия управления - это общее понятие, которое отличает библиотеку от фреймворка. Подразумевает что вызывающий код контролирует внешнее окружение и время и порядок вызова библиотечных методов. Однако, в случае фреймворка обязанности меняются местами: фреймворк предоставляет некоторые точки расширения, через которые он вызывает определенные методы пользовательского кода.
Что такое DI?
Все зависимости, требуемые некоторому классу, передаются в качестве параметров конструктора, представленных в виде интерфейсов или абстрактных классов.
Какие есть типы IoC?
Constructor-based
Setter-based
Interface-based
В чем отличие между DI и IoС?
Инверсия зависимости это принцип ООП, который служит для уменьшения связанности слоев сложных приложений.
DI контейнер это реализация, которая позволяет применит принцип инверсии зависимостей. Она знает о всех интерфейсах и их реализациях в системе и умеет их сопоставлять.
Что такое Spring Beans?
Это объекты, которые представляют модель вашего приложения, которыми управляет spring контейнер.
У bean есть имя, scope, способ инициализации, свойства, способ связывания.
Что такое BeanFactory?
Это реализация шаблона Фабрика, которая применяется к IoC чтобы отделить конфигурацию приложения и зависимости в программном коде.
Например XMLBeanFactory загружает beans, определения которые находятся в XML файле
Какие вы знаете реализации BeanFactory?
XMLBeanFactory SimpleJndiBeanFactory ClassPathXmlAppliccationContext XmlWebApplicationContext AnnotationConfigWebApplicationContext AnnotationConfigApplicationContext FileSystemXmlApplicationContext StaticWebApplicationContext
Что такое Application Context?
Это интерфейс, который предоставляет конфигурацию приложения. Доступен только для чтения во время выполнения.
Предоставляет:
Factory methods бинов для доступа к компонентам;
Создавать события и регистрировать слушателей;
Загружать файлы конфигурации;
Наследуется от родительского контекста;
поддержка i18n интернализации.
Чем отличается Application Context от BeanFactory?
Bean Factory
инициализирует и делает инъекции бинов.
Application Context
инициализирует и делает инъекции бинов, сообщений и обработку событий;
Автоматически регистрирует BeanPostProcessor, BeanFactoryPostProcessor;
Источник событий, доступ к источнику событий.
Какие есть три способа для того что предоставить конфигурационные метаданные Spring контейнеру?
Конфигурационный файл XML*
Аннотации
Java конфигурации
Как определить scope свойства бина?
Используя атрибут scope
Какие типы scope бинов в Spring?
Session - жизненный цикл экземпляра ограничен в пределах одной и той же HTTP Session
Global-session Жизненный цикл экземпляра ограничен в пределах глобальной HTTP Session
Singleton - единый объект на контейнер (по умолчанию)
Prototype - любое количество объектов
Request - ЖЦ ограничен единственным HTTP запросом; для каждого нового запроса создается новый экземпляр бина.
Является ли singleton bean в Spring потокобезопасным?
Нет, он не thread-safe.
Опишите жизненный цикл bean в Spring framework
Контейнер находит бины в XML;
Делаются настройки которые определены для бина;
Вызываются методы setBeanName() если бин реализует BeanNameAware
postProcessorBeforeInitialization();
Вызывается afterPropertySet() если бин реализует InitializingBean
postProcessAfterInitialization()
Если реализуется DisposableBean - вызывается destroy()