Spring IoC контейнер: настройка бинов, обратные вызовы инициализации
Интерфейс org.springframework.beans.factory.InitializingBean позволяет компоненту выполнять работу по инициализации после того, как контейнер установил все необходимые свойства для компонента. Интерфейс InitializingBean определяет единственный метод:
Java
void afterPropertiesSet() throws Exception;
Kotlin
fun afterPropertiesSet()
Рекомендуется не использовать интерфейс InitializingBean, потому что он без необходимости связывает код с Spring. В качестве альтернативы предлагается использовать аннотацию @PostConstruct или указать метод инициализации POJO. В случае метаданных конфигурации на основе XML вы можете использовать атрибут init-method, чтобы указать имя метода, имеющего пустую подпись без аргументов. С Java конфигурацией вы можете использовать атрибут initMethod @Bean. Рассмотрим следующий пример:
<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init"/>
Java
public class ExampleBean {
public void init() {
// выполнить некоторую работу по инициализации
}
}
Kotlin
class ExampleBean {
fun init() {
// выполнить некоторую работу по инициализации
}
}
Предыдущий пример имеет почти такой же эффект, как и следующий (который состоит из двух списков):
<bean id="exampleInitBean" class="examples.AnotherExampleBean"/>
Java
public class AnotherExampleBean implements InitializingBean {
@Override
public void afterPropertiesSet() {
// выполнить некоторую работу по инициализации
}
}
Kotlin
class AnotherExampleBean : InitializingBean {
override fun afterPropertiesSet() {
// выполнить некоторую работу по инициализации
}
}
Однако первый из двух предыдущих примеров не связывает код с Spring.
Читайте также:
- Spring IoC контейнер: настройка бинов, обратные вызовы жизненного цикла
- Spring IoC контейнер: области применения бинов, синглтон
- Spring IoC контейнер: области применения бинов, прототип (prototype)
Комментарии
Отправить комментарий