TGViewer
Чашечка Java Чашечка Java @a_cup_of_java · 8.36K subscribers
Post #8679 102
Чашечка Java
Развёрнутое пояснение:

1. Контроллер обращается к сервису через прокси Spring; активной транзакции в этот момент нет.

2. Для метода submit транзакционные настройки не заданы, поэтому прокси передаёт управление объекту сервиса без открытия транзакции.

3. Метод submit напрямую вызывает save у того же объекта. Такой вызов не проходит через прокси, который применяет транзакционные настройки.

4. Аннотация
@Transactional на save сама по себе не запускает транзакцию: в режиме прокси её должен обработать перехватчик Spring. Поэтому транзакция сервиса не открывается, а отсутствие транзакции само по себе не вызывает указанного исключения. Отдельные операции репозитория могут иметь собственные транзакционные границы.

Почему это важно

Задача проверяет понимание прокси и декларативного управления транзакциями Spring. При обработке заказа такой внутренний вызов может оставить несколько записей без общей транзакции: сбой поздней операции не обязательно отменит предыдущие. Если все операции submit должны быть атомарными, транзакционную границу можно задать на submit; если нужна отдельная граница для save, его можно вынести в другой сервис и вызывать через прокси.
More from @a_cup_of_java
  1. Oct 11, 2026Post #8678
  2. Oct 10, 2026Регистрация плагинов по списку через BeanRegistrar в Spring Framework 7 Spring Framework 7…
  3. Oct 10, 2026Read. Write. Edit. Bash. Это базовый набор операций Pi — агента, на котором построен OpenC…
  4. Oct 10, 2026Post #8675
  5. Oct 9, 2026Маршрутизатор запросов к моделям на Spring AI TypeSafe Spring Boot 4.1.1 и стартер Spring…
  6. Oct 9, 2026Spring Boot 4: настройка сервера авторизации и проверка токенов Spring Authorization Serve…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →