嗨,我需要对春季交易做出以下澄清。看到像:
Service1.java
@Service
@Repository
public class Service1 {
@Autowired
EmployeeRepo employeeRepo;
@Autowired
Repo repo;
@Transactional
public void m() {
employeeRepo.save(new Employee(5, "N3", 33, 3000));
repo.m1(); //M1
//m1(); //M2
System.out.println(1/0); //M3
}
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void m1() {
Employee e=employeeRepo.findOne(1);
//System.out.println(1/0); //M4
e.setAge(212);
}
}
Repo.java
@Repository
class Repo{
@Autowired
EmployeeRepo employeeRepo;
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void m1() {
Employee e=employeeRepo.findOne(1);
//System.out.println(1/0); //M5
e.setAge(212);
}
}
案例:
按原样执行时,没有插入,只有更新完成,但有异常 2.(重置)在注释M1和不注释M2时,则不插入任何内容,但不进行任何异常更新(同一类中的方法)
3.(重置)在取消注释M5和注释M3时,没有插入操作,没有例外情况除外
4.(重置)取消注释M2,M4并注释M1,M3时,没有插入操作,没有例外情况不会进行任何更新
注意:相同的m1()方法位于相同的调用方调用中,并且位于不同的类中。 那么为什么在不同的类中同一操作的这种不同行为呢?那是什么概念?