Как отметил Бонд, это Java EE аннотаций, не яровых - однако, как со многими примечаниями, Spring поддерживает их (так же, как Спрингс @Autowired
против EE @Inject
и т.д.).
Я бы не сказал, однако, что отражение не является ООП - хотя это, возможно, идет вразрез с чистой инкапсуляцией, оно является неотъемлемой частью основных языков ООП по уважительным причинам. Использование рефлексии также не подразумевает АОП.
AOP обычно используется для вызова чего-либо до/после/вокруг метода - кода, который там не виден - и часто представлен аннотацией (например, Springs @Transactional
), но может быть также объявлен в другом месте (конфигурация). @PostConstruct
и @PreDestroy
- это, в первую очередь, методы жизненного цикла, такие как крючки, которые будут происходить в определенное время, - и все, что они делают, явно указано в коде.
Таким образом, нет никакого аспекта, спрятанного там, определенно никакого аспекта в типичном значении АОП. Единственное, что скрыто, это волшебство, которое называет его в нужный момент. Но пока Java не поддерживает AOP напрямую, не нужна библиотека AOP, простое отражение. Я сомневаюсь, что кто-нибудь будет называть JVM's shutdown hooks AOP.
Нет ... Это не так. –