Spring IoC контейнер: конфигурация на основе аннотаций, @PostConstruct и @PreDestroy

CommonAnnotationBeanPostProcessor распознает не только аннотацию @Resource, но и аннотации жизненного цикла JSR-250: javax.annotation.PostConstruct и javax.annotation.PreDestroy. Представленная Spring 2.5, поддержка этих аннотаций предлагает альтернативу механизму обратного вызова жизненного цикла, описанному в обратных вызовах инициализации и обратных вызовах уничтожения. При условии, что CommonAnnotationBeanPostProcessor зарегистрирован в Spring ApplicationContext, метод, содержащий одну из этих аннотаций, вызывается в той же точке жизненного цикла, что и соответствующий метод интерфейса жизненного цикла Spring или явно объявленный метод обратного вызова. В следующем примере кэш предварительно заполняется при инициализации и очищается при уничтожении:

Java

public class CachingMovieLister {

    @PostConstruct
    public void populateMovieCache() {
        // заполняет кэш фильма при инициализации...
    }

    @PreDestroy
    public void clearMovieCache() {
        // очищает кэш фильма при уничтожении...
    }
}

Kotlin

class CachingMovieLister {

    @PostConstruct
    fun populateMovieCache() {
        // заполняет кэш фильма при инициализации...
    }

    @PreDestroy
    fun clearMovieCache() {
        // очищает кэш фильма при уничтожении...
    }
}

Как и @Resource, типы аннотаций @PostConstruct и @PreDestroy были частью стандартных библиотек Java от JDK 6 до 8. Однако весь пакет javax.annotation был отделен от основных модулей Java в JDK 9 и в конечном итоге удален в JDK 11. При необходимости, артефакт javax.annotation-api необходимо получить через Maven Central, просто чтобы добавить в путь к классам приложения, как и любую другую библиотеку.


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


Комментарии

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

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

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

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