Я хочу знать, что на самом деле происходит, когда вы комментируете метод с помощью @Transactional
?
Конечно, я знаю, что Spring перенесет этот метод в транзакцию.
Но у меня есть следующие сомнения:
- Я слышал, что Spring создает прокси-класс? Может ли кто-нибудь объяснить это с помощью глубины. Что на самом деле находится в этом прокси-классе? Что происходит с фактическим классом? И как я могу увидеть Spring созданный прокси-класс
- Я также читал в документах Spring, которые:
Примечание. Поскольку этот механизм основан на прокси-серверах, только "внешние" вызовы методов, поступающие через прокси-сервер, будут перехвачены. Это означает, что "self-invocation", то есть метод внутри целевого объекта, вызывающий какой-либо другой метод целевого объекта, не приведет к фактической транзакции во время выполнения, даже если вызываемый метод помечен
@Transactional
!
Источник: http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
Почему только вызовы внешних методов будут в транзакции, а не в методах самозапуска?