У меня есть класс обслуживания с методом doSomething () с аннотацией @transactional и с типом распространения «required». Другой нетранзакционный класс, вызывающий doSomething () дважды.
Я предполагаю, что для каждого вызова будет создано 2 транзакции, но оказалось, что для обоих вызовов используется только одна транзакция. Чтобы еще больше сбить меня с толку, я дважды вызывал doSomething (), используя другой нетранзакционный класс @RestController. Но на этот раз оказалось, что для каждого звонка используются разные транзакции.
У меня 2 вопроса.
Какое поведение ожидается (1 или 2 транзакции)
Почемуздесь разница?
NormalClass{
@Autowired
Service service;
service.doSomething();
// same transaction used
service.doSomething();
}
RestController{
@Autowired
Service service;
service.doSomething();
// new transaction used
service.doSomething();
}
Service{
@Transactional
doSomething(){};
}