在下面的代码中,当从methodOuter内部调用methodInner()时,应该处于事务边界之内。但实际上并没有。
但是,当直接从MyController类中调用methodInner()时,它会受到事务的限制。有什么解释吗?
这是控制器类。
@Controller
public class MyController {
@Autowired
@Qualifier("abcService")
private MyService serviceObj;
public void anymethod() {
// below call cause exception from methodInner as no transaction exists
serviceObj.methodOuter();
}
}
这是服务类(Service Class)。
@Service("abcService")
public class MyService {
public void methodOuter() {
methodInner();
}
@Transactional
public void methodInner() {
.....
//does db operation.
.....
}
}
@Async
替换为@Transactional
,你就得到了你的答案。 - geoand