spring jpa使用@service注解时失效该如何解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring jpa使用@service注解时失效该如何解决?相关的知识,希望对你有一定的参考价值。

在jeesite中引入一个简单的spring data jpa 项目,运行时总是提示No bean named 'countryService' is defined,即我的@Service( 'countryService')注解失效了,求助这是什么原因?

那就是没有扫描到文件,看看打包后里面包路径是不是spring扫描的包路径,项目运行时打包成jar的项目相当于把这个压缩包里面的东西解压到classes里面。

Spring 框架对 JPA 提供的支持主要体现在如下几个方面:

    首先它使得 JPA 配置变得更加灵活。

    JPA 规范要求,配置文件必须命名为 persistence.xml,并存在于类路径下的 META-INF 目录中。该文件通常包含了初始化 JPA 引擎所需的全部信息。Spring 提供的 LocalContainerEntityManagerFactoryBean 提供了非常灵活的配置,persistence.xml 中的信息都可以在此以属性注入的方式提供。

    其次Spring 实现了部分在 EJB 容器环境下才具有的功能。

    比如对 @PersistenceContext、@PersistenceUnit 的容器注入支持。

    第三,Spring 将 EntityManager 的创建与销毁、事务管理等代码抽取出来,并由其统一管理。

4.开发者不需要关心这些,业务方法中只剩下操作领域对象的代码,事务管理和 EntityManager 创建、销毁的代码都不再需要开发者关心了。

参考技术A

主项目里要引用jpa里的spring配置才行啊,把配置加入进去就可以解决了。

1、用文字来解释字句。

2、泛指解释。

3、解释字句的文字。

4、神鬼名。民间传说指阴司第一阎王殿中职掌解送鬼魂并令其注册者。

Service 团队(创团之初名叫Tencent 后来改名为Service )自2010年3月12日创建至今,我们经历了重重困难与各式各样的挑战,在我们成长的足迹里辛酸苦楚不言而喻,但我们始终没有放弃,一直坚信“前途是光明的,道路是曲折的。”正是这种决心和团员的不懈努力,致使我们仅用了7个月的时间就从一个不为人知的小团队发展壮大到如今汇聚问问各领域专家及精英且小有名气的大团队。

参考技术B

那就是没有扫描到文件,看看打包后里面包路径是不是spring扫描的包路径,项目运行时打包成jar的项目相当于把这个压缩包里面...

Spring事务注解@Transactional失效的问题

在项目中发现事务失效,使用@Transactional注解标注的Service业务层实现类方法全部不能回滚事务了,最终发现使用因为Spring与shiro进行整合之后导致的问题,将所有的Service层实现类都添加如下注解

@Scope(proxyMode= ScopedProxyMode.TARGET_CLASS)

将代理方式换成CGLib的代理方式之后得以解决,最终不明原因,如有看到这篇博客并知道答案的朋友请留言告知

如果事务不能回滚,也需要考虑如下几点:

  • 表得存储引擎为MyISAM是没有事务的,需要使用InnoDB
  • 加事务的方法中手动try...catch住了异常,只有将异常抛出来(无论是主动还是被动)事务才能回滚
  • Spring事务默认回滚的是RunTimeException运行时异常,如果是check异常是不会回滚的,可以指定回滚异常,如下
@Transactional(rollbackFor = Exception.class)

只要出现异常就进行回滚

以上是关于spring jpa使用@service注解时失效该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 项目中配置多数据源@Transactional注解失效问题

Spring事务注解@Transactional失效的问题

spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子

spring data jpa使用spring data jpa时,关于service层一个方法中进行删除和插入两种操作在同一个事务内处理

Dubbo与Spring的融合机制

spring aop注解失效