php cdi_CDI中的事务异常处理
php cdi
在Java EE中,在執(zhí)行事務(wù)性業(yè)務(wù)方法期間引發(fā)的異常導(dǎo)致事務(wù)回滾。 但是,只有系統(tǒng)異常(即運行時異常)才是這種情況,該方法異常未在方法簽名中聲明。
對于應(yīng)用程序異常(即檢查的異常)或任何帶@ApplicationException注釋的異常,不會自動回滾事務(wù)。 有時這會引起企業(yè)開發(fā)人員的困惑。
對于EJB業(yè)務(wù)方法,還可以通過指定@ApplicationException(rollback = true)來強(qiáng)制事務(wù)回退應(yīng)用程序異常。 但是,僅當(dāng)EJB中的托管bean時才考慮使用此注釋。
CDI還可以使用@Transactional事務(wù)上執(zhí)行業(yè)務(wù)方法。 此注釋使我們擁有更多控制權(quán)。 使用@Transactional我們不僅可以定義事務(wù)類型,例如REQUIRED或REQUIRES_NEW ,而且可以定義我們要回滾或不希望回滾的異常類型:
public class CarManufacturer {@InjectCarFactory carFactory;@InjectEvent<CarCreated> createdCars;@PersistenceContextEntityManager entityManager;@Transactional(rollbackOn = CarCreationException.class,dontRollbackOn = NotificationException.class)public Car manufactureCar(Specification specification) {Car car = carFactory.createCar(specification);entityManager.persist(car);createdCars.fire(new CarCreated(car.getIdentification()));return car;}}CarCreationException發(fā)生CarCreationException ,事務(wù)將被回滾,但不是NotificationException 。
翻譯自: https://www.javacodegeeks.com/2018/01/transactional-exception-handling-cdi.html
php cdi
總結(jié)
以上是生活随笔為你收集整理的php cdi_CDI中的事务异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring 计划任务_与Spring的
- 下一篇: 搜狗输入法linux怎么安装(搜狗输入法