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 приложения, как любую другую библиотеку.