Почему методы, аннотированные @Transactional, должны быть переопределенными
У меня есть следующий код:
/**
* Restored deleted partner
*/
@Transactional
public void restorePartnerById(Integer id){
// logic
}
Когда я делаю метод окончательным
/**
* Restored deleted partner
*/
@Transactional
public final void restorePartnerById(Integer id){
// logic
}
Я получаю сообщение об ошибке компиляции:
Методы с комментариями
@Transactional
должно быть переопределено
Я начал копаться, но не могу понять причину, по которой он должен быть переопределен. Почему метод должен быть переопределен?
2 ответа
Spring Transactional работает с созданием прокси-класса, который переопределяет методы:
создайте транзакционный прокси вокруг объекта, который создается из определения bean-компонента fooService. Прокси-сервер будет сконфигурирован с указанием транзакций, поэтому при вызове соответствующего метода на прокси-сервере
Я думаю, что изменение метода на финал не имеет отношения к @Trasacational
смотрите эту ссылку, как @Trasactional
будет работать http://www.codingpedia.org/jhadesdev/how-does-spring-transactional-really-work/