Spring IoC контейнер: пользовательские области применения бинов
Механизм определения бинов расширяемый. Вы можете определить свои собственные области или даже переопределить существующие области, хотя последнее считается плохой практикой, и вы не можете переопределить встроенные области singleton и prototype.
Создание пользовательской области применения бинов
Чтобы интегрировать ваши пользовательские области в контейнер Spring, вам необходимо реализовать интерфейс org.springframework.beans.factory.config.Scope.
Интерфейс Scope имеет четыре метода для получения объектов из области, удаления их из области и предоставления возможности их уничтожения.
Например, реализация области действия session возвращает bean-объект в области session (если он не существует, метод возвращает новый экземпляр bean-компонента после привязки его к session для использования в будущем). Следующий метод возвращает объект из базовой области:
Java
Object get(String name, ObjectFactory<?> objectFactory)
Kotlin
fun get(name: String, objectFactory: ObjectFactory<*>): Any
Например, реализация области действия session удаляет сессионный компонент из базового session. Объект должен быть возвращен, но вы можете вернуть null, если объект с указанным именем не найден. Следующий метод удаляет объект из базовой области:
Java
Object remove(String name)
Kotlin
fun remove(name: String): Any
Следующий метод регистрирует обратные вызовы (callbacks), которые должна выполнить область, когда она уничтожена или когда уничтожен указанный объект в области:
Java
void registerDestructionCallback(String name, Runnable destructionCallback)
Kotlin
fun registerDestructionCallback(name: String, destructionCallback: Runnable)
Следующий метод получает идентификатор диалога для базовой области:
Java
String getConversationId()
Kotlin
fun getConversationId(): String
Этот идентификатор отличается для каждой области. Для реализации в рамках session этот идентификатор может быть идентификатором session.
Читайте также:
- Spring IoC контейнер: области применения бинов
- Spring IoC контейнер: области применения бинов, синглтон
- Spring IoC контейнер: области применения бинов, прототип (prototype)
- Spring IoC контейнер: области применения бинов - Request, Session, Application и WebSocket
- Spring IoC контейнер: области применения бинов, бины с областями применения как зависимости
Комментарии
Отправить комментарий