Являются ли аннотации метода Spring @PostConstruct и метода @PreDestroy формой AOP?

У меня есть следующие сомнения, связанные с аннотациями метода Spring @PostConstruct и @PreDestroy.

Таким образом, аннотация @PostConstruct означает, что аннотированный метод автоматически выполняется после создания объекта и после внедрения зависимости с использованием метода setters.

@PreDestroy автоматически выполняется до закрытия ApplicationContext.

Я сомневаюсь: аннотации @PostConstruct и @PreDestroy являются формой АОП или нет?

3 ответа

Решение

АОП - это парадигма программирования, смотрите здесь. Если я правильно понимаю ваш вопрос, вы спрашиваете, являются ли они "@PostConstruct и @PreDestroy" в рамках AOP. Мой ответ - да, хотя бы потому, что они разработаны с использованием Reflection, а не ООП.

Замечания:

АОП включает в себя методы и инструменты программирования, которые поддерживают модульность задач на уровне исходного кода.

Оба являются частью спецификаций EE, а не весны.

Пожалуйста, обратитесь к соответствующим документам здесь и здесь для более подробной информации.

Как упоминал Бонд, это аннотации Java EE, а не Spring - однако, как и во многих аннотациях, Spring поддерживает их (как и Spring s). @Autowired против EE @Inject, так далее.).

Однако я бы не сказал, что рефлексия не является ООП - хотя она, возможно, идет вразрез с чистой инкапсуляцией, она является неотъемлемой частью основных языков ООП по веским причинам. Использование отражения также не подразумевает АОП.

AOP обычно используется для вызова чего-либо до / после / вокруг метода - кода, который там не виден - и часто представляется аннотацией (например, Spring s). @Transactional), но также может быть объявлено в другом месте (конфигурация). @PostConstruct а также @PreDestroy с другой стороны, это в основном методы жизненного цикла, разновидности хуков, которые произойдут в определенное время - и все, что они делают, явно в коде.

Таким образом, там нет никакого скрытого аспекта, определенно нет аспекта в типичном значении АОП. Единственное, что скрыто, это магия, которая вызывает его в нужный момент. Но хотя Java не поддерживает AOP напрямую, библиотека AOP не нужна, просто простое отражение. Я сомневаюсь, что кто-нибудь также назвал бы отключение JVM AOP.

Другие вопросы по тегам