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 приложения, как любую другую библиотеку.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ