Назад к вопросам
СБЕР Корпус
Junior — Middle
132
Каким образом инициировать новую транзакцию в сервисе, не используя внутренние зависимости (Self Injection)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Spring для инициирования новой транзакции без использования self-injection можно применить программное управление транзакциями через TransactionTemplate или PlatformTransactionManager.
Пример с использованием TransactionTemplate:
@Service
public class MyService {
private final TransactionTemplate transactionTemplate;
public MyService(PlatformTransactionManager transactionManager) {
this.transactionTemplate = new TransactionTemplate(transactionManager);
}
public void method() {
transactionTemplate.execute(status -> {
// код, выполняемый в новой транзакции
return null;
});
}
}
Такой подход позволяет явно управлять границами транзакций без необходимости вызывать методы через прокси самого бина (self-injection). Это особенно полезно, когда нужно гарантировать, что код выполнится в новой транзакции.