Мне нужно немного разъяснений относительно весеннего перехода.
В ClassA
я создаю декларативную транзакцию. С ClassA
я звоню method1()
из ClassB
.
ClassB
имеет аннотацию @Transactional(propagation = Propagation.REQUIRED)
на уровне класса.
В method1()
я делаю операцию сохранения.
У меня вопрос, когда эти данные будут зафиксированы? Будет ли оно совершено, пока из-под контроля
method1()
? или в ClassA
, где мы совершаем транзакцию вручную?
Код:
ClassA
class ClassA {
void myMethod() {
TransactionStatus status = null;
DefaultTransactionDefinition def =
new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
def.setTimeout(contentFileProcessingConfigBean.getFileCopyTransactionTimeout());
status = transactionManager.getTransaction(def);
b.method1();
if (status != null) {
transactionManager.commit(status);
}
}
}
ClassB
@Transactional(propagation = Propagation.REQUIRED)
class ClassB {
void method1() {
//doing save operation
}
}