当前位置: 首页 > 知识库问答 >
问题:

事务性批注错误

董奇思
2023-03-14

在服务类中放置“@transactional(readonly=false)”批注时,出现以下错误

描述:

bean“student service”无法作为“com.student.service.studentServiceImpl”注入,因为它是实现:com.student.service.studentService的JDK动态代理

示例代码:

@Service("studentService")
@Transactional(readOnly=false)
public class StudentServiceImpl implements StudentService {

}

public interface StudentService {

}

行动:

考虑注入bean作为其接口之一,或者通过在@enableasync和/或@enablecaching上设置proxyTargetClass=true来强制使用基于CGLIB的代理。

进程已完成,退出代码为%1

这是什么原因造成的?

共有1个答案

山森
2023-03-14

正如在注释中已经提到的,错误发生在您试图注入/自动连接实现类而不是接口时。

bean“student service”无法作为“com.student.service.studentServiceImpl”注入,因为它是实现:com.student.service.studentService的JDK动态代理

在SO发布的设置中,

public class StudentServiceImpl implements StudentService {
}

public interface StudentService {
}

如果按照以下方式自动连接接口,则不会出现错误:

@Autowired //or @Inject
StudentService studentService;
 类似资料:
  • 在我们的一个项目中,我们遇到了一个问题,Spring忽略了事务注释,然后失败了,出现了以下错误。 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2018-09-13 15:05:18406错误[主]组织。springframework。靴子SpringApplication应用程序运行失败组织。springframework。道。Inva

  • 我正在阅读使用Spring框架的事务管理。在第一个组合中,我使用Spring Hibernate和Hibernate的API来控制事务(Hibernate API)。接下来,我想使用注释进行测试,它确实起了作用。 我感到困惑的是: > JPA、JTA、Hibernate是否有自己的事务管理方式。举个例子,考虑如果我使用Spring Hibernate,在那种情况下,你会使用“JPA”事务吗? 就像

  • 问题内容: 我正在使用Spring注释来管理我的事务,如下所示: 我想知道如果忘记注释会发生什么: 当alertDAO实现如下时: 似乎Hibernate允许我从数据库中获取数据,即使没有注释也是如此。 这种粗心大意的后果是什么?可能发生的最坏情况是什么? 问题答案: 根据文档(Spring docs ),它仅仅是元数据,它表明方法或接口可以由“具有交易意识的”事物(例如)进行配置。 相信只有 t

  • 问题内容: 之间有什么区别? 在整个类中添加“ @Transactional”注释 为每个方法添加“ @Transactional”注释? 使用spring和Hibernate吗? 问题答案: 基本上,如果您用所有方法注释该类,则将是事务性的。如果您不这样做,则可以仅将其标注为所需的方法。此外,你可以为每个方法指定不同的属性,如,,,…

  • 我正在使用MongoDB的springboot 2.3.0。注释对我不起作用。如果发生异常,则无法回滚事务。 任何帮助都将得到高度赞赏。 我的控制器类: 我的serviceImpl类 我的MongoConfig类

  • 试图收集和理解@事务性注释的要点并越过了一点。因此,在使用事务性注释时,我们需要记住的主要事情是: 事务注释只能应用于公共方法[根据Spring@Transactional属性对私有方法起作用吗? 事务性注释应该应用于具体的类,而不是接口[根据我应该将@transactional annotation放在接口定义还是实现类的位置? 事务注释应应用于服务级别[根据Spring@Transaction