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.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки