Я прочитал эту статью (предполагается, что я уже знаю, что такое граница транзакции ) и этот вопрос SO (не могу расшифровать значение границы транзакции из этого вопроса). Другими словами, я не нашел четких определений или попыток определения границ транзакций. Я понимаю, что такое переход на 100 %, но что такое концептуально граница транзакции?
Что такое граница транзакции?
Ответы (2)
Это место, где транзакция начинается или фиксируется/откатывается.
Например, метод с аннотацией @Transactional
определяет две границы транзакции: когда метод вызывается, транзакция начинается, а когда он возвращается, транзакция фиксируется/откатывается.
Вы можете прочитать ссылку Spring Границы транзакций:
Например, метод активатора шлюза или службы может быть аннотирован с помощью
@Transactional
, илиTransactionInterceptor
может быть определен в конфигурации XML с выражением pointcut, указывающим на конкретные методы, которые должны быть транзакционными. Суть в том, что у вас есть полный контроль над конфигурацией и границами транзакций в этих сценариях.Другим важным фактором являются границы транзакций в потоке сообщений. При запуске транзакции контекст транзакции привязывается к текущему потоку. Таким образом, независимо от того, сколько конечных точек и каналов у вас есть в вашем потоке сообщений, контекст вашей транзакции будет сохранен, если вы гарантируете, что поток продолжается в том же потоке. Как только вы нарушите его, введя канал Pollable Channel или Executor Channel или инициировав новый поток вручную в каком-либо сервисе, граница Transactional также будет нарушена.