У меня есть класс Ingestion
, который предоставляет один метод ingest
.Этот метод обрабатывает каждый раздел переданной формы (раздел 1, раздел 2 и т. Д. И т. Д.).
У меня есть закрытые методы для каждого раздела, сохраняющие сущность в процессе обработки.Мне известно, что @Transactional
не влияет на частные методы, однако я не хочу показывать эти методы, но хотел бы использовать функциональность, предоставляемую @Transactional
.
Я хочу убедиться, чтокаждый раздел завершается в своем собственном Transaction
;Я мог бы сделать это с помощью «AspectJ» (как предлагали другие ответы SO) вместо Spring готовой реализации, но я стараюсь избегать из-за системных изменений, которые это может вызвать.
Любые мысли о другомподход?
Приведенный ниже псевдокод дает общее представление о структуре класса:
public Class Ingestion {
// Autowired Repo's
...
...
@Transactional
public void ingest(Form form){
this.processSection1(form);
this.processSection2(form);
this.processSection3(form);
}
@Transactional
private void processSection1(Form form){
// do specific section 1 logic
section1Repo.save(form);
}
@Transactional
private void processSection2(Form form){
// do specific section2 logic
section2Repo.save(form);
}
@Transactional
private void processSection3(Form form){
// do specific section3 logic
section3Repo.save(form);
}
}
=============================================================================== Это не повторяющийся вопрос, как отмечено в комментариях.Я знаю, @Transactional
не работает на частных методах.Мой вопрос больше похож на то, как «как обойти эту проблему Spring AOP без использования AspectJ»