Зачем использовать АОП для управления транзакциями в Spring?

Я изучаю AOP и узнал, что это полезно для разделения интересов, например, logging, transaction management, security и т. д.

Пока хорошо знать AOP.

Теперь я прочитал об управлении транзакциями Spring в среде Spring, у нас может быть аннотация @Transactional.

Именно этот момент меня смущает, почему мы должны использовать AOP, в котором мы должны создать Aspects, а не использовать аннотацию, которую предоставляет Spring.

Например:

@Transactional
public void dataAccessTrans() {

}

Если в Spring уже есть функции, связанные с транзакциями, то почему мы должны использовать AOP для управления транзакциями?

Если мы используем AOP, то не нужно ли нам создавать Aspect и создавать advice, которые будут воздействовать на метод; Разве это не заставляет нас выполнять ручную работу, а не обрабатывать ее самой Spring Framework с помощью собственных аннотаций.

Может ли кто-нибудь помочь мне понять это, что я не могу понять ясно.


person CuriousMind    schedule 27.01.2018    source источник


Ответы (1)


Spring полагается на АОП для реализации декларативных транзакций.

Декларативное управление транзакциями в Spring Framework стало возможным благодаря аспектно-ориентированному программированию (АОП) Spring, хотя, поскольку код транзакционных аспектов поставляется с дистрибутивом Spring Framework и может использоваться шаблонным образом, концепции АОП обычно не нужно понимать, чтобы эффективно использовать этот код.

Итак, когда вы используете аннотацию @Transactional:

@Transactional
public void dataAccessTrans() {
  ...
}

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

person davidxxx    schedule 27.01.2018
comment
Спасибо за ваш ответ, имеет смысл. Ваш ответ прояснил сомнения, приняв ваш ответ, еще раз спасибо! - person CuriousMind; 27.01.2018
comment
Пожалуйста. Умный вопрос. И, наконец, вы были на правильном пути :) - person davidxxx; 27.01.2018