CommonAnnotationBeanPostProcessor распознает не только аннотацию @Resource, но и аннотации жизненного цикла в JSR-250: javax.annotation.PostConstruct и javax.annotation.PreDestroy. Введенная в Spring 2.5, поддержка данных аннотаций предлагает альтернативу механизму обратных вызовов жизненного цикла. При условии, что CommonAnnotationBeanPostProcessor зарегистрирован в интерфейсе ApplicationContext фреймворка Spring, метод, несущий одну из этих аннотаций, вызывается в той же точке жизненного цикла, что и соответствующий метод интерфейса жизненного цикла Spring или явно объявленный метод обратного вызова. В следующем примере кэш предварительно заполняется при инициализации и очищается при уничтожении:
public class CachingMovieLister {
@PostConstruct
public void populateMovieCache() {
// заполняет кэш при инициализации...
}
@PreDestroy
public void clearMovieCache() {
// очищает кэш при уничтожении...
}
}
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 приложения, как любую другую библиотеку.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ