JavaRush /Курсы /Spring /@PostConstruct и @PreDestroy

@PostConstruct и @PreDestroy

Spring
1 уровень , 35 лекция
Открыта

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

Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Ololo Sha Уровень 41 Expert
12 августа 2025
добавил зависимость через Maven javax.annotation-api , теперь видет эти аннотации, но они все равно не работаеют( , кто нибудь подскажет в чем беда?