As per my understanding, private methods can't be proxied in Spring Boot. And thus @Transactional can't be put on private methods. Which makes me wonder, can transaction propagate if there are one or more private methods in between e.g. are the following code blocks equivalent:
class SomeClass{
@Autowired Dao dao;
@Transactional(propagation = Propagation.REQUIRED)
public bigMethod(int someArgument){
Data data1 = process(someArgument);
Data data2 = process(someArgument+1);
this.dao.save(data1);
this.dao.save(data2);
}
}
Is the above equivalent to:
class SomeClass{
@Autowired Dao dao;
@Transactional(propagation = Propagation.REQUIRED)
public bigMethod(int someArgument){
Data data1 = process(someArgument);
Data data2 = process(someArgument+1);
doSave(data1);
doSave(data2);
}
private void doSave(Data data){
this.dao.save(data);
}
Notice the the second code adds a private method in between. And the dao.save() method which is in a separate class is as:
public class DAO{
@Autowired Repository repo;
@Transactional(propagation = Propagation.REQUIRED)
public void save(Data data){
repo.save(data);
}
}