我正在将一个EJB项目迁移到Spring boot项目。我已经成功地将其他批注替换为spring批注,但SessionContext对象有问题。我的遗留代码如下
@Resource
SessionContext sessionContext;
.....
if (some condition) {
sessionContext.setRollbackOnly();
return false;
}对于这段代码,我得到了以下错误
A component required a bean of type 'javax.ejb.SessionContext' that could not be found.
Action:
Consider defining a bean of type 'javax.ejb.SessionContext' in your configuration.发布于 2021-10-22 12:59:31
我认为你必须使用一些不同的功能。
setRollbackOnly()
我经常看到会话上下文用于回滚。在Spring中,您可以将其替换为:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();或使用注解类
@Transactional(rollbackFor = MyException.class) 因此,您可以从类中抛出异常以导致回滚。
getBusinessObject()
第二个最常用的功能是加载业务对象的方法,例如,我可以在同一个bean中创建一个新事务。在这种情况下,您可以使用Self-inject:
@Lazy private final AccountService self;和一个带有@Transactional的注释方法。当然,这解决了您需要使用代理对象的功能的任何其他情况。
Spring中的其他类也提供了其他功能,但我认为这两个类是Java EE世界中最常用的两个类,在迁移时,人们会希望在Spring中替换它们。
https://stackoverflow.com/questions/69656696
复制相似问题