spring jpa使用@service注解时失效提示No bean named 'countryService' is defined
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring jpa使用@service注解时失效提示No bean named 'countryService' is defined相关的知识,希望对你有一定的参考价值。
在jeesite中引入一个简单的spring data jpa 项目,运行时总是提示No bean named 'countryService' is defined,即我的@Service( 'countryService')注解失效了,求助这是什么原因?
单独测试这个简单的spring data jpa 项目时可以正常运行,就是导出为jar包放进jeesite项目中,在运行jeesite,调用spring data jpa 项目中的servlet时提示No bean named 'countryService' is defined
那就是没有扫描到文件,看看打包后里面包路径是不是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 那就是没有扫描到文件,看看打包后里面包路径是不是spring扫描的包路径,项目运行时打包成jar的项目相当于把这个压缩包里面的东西解压到classes里面追问不好意思,我接触java才一段时间,还不太懂,“看看打包后里面包路径是不是spring扫描的包路径”是怎么看
追答项目启动spring时候,不是要加载spring的xml配置文件,就这个里面
追问应该都是对的,, <jpa:repositories base-package="com.hotbrid.his"
主项目jeesite里面也加了com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
那看看jar包里面是不是com.hotbrid.his
追问是的
你看看是不是service注册的名字和使用的时候不一样,注意下大小写,如果不行就把jar解压出来放到jeesite里面看是否正常
还有打包的时候是否选择了 add directory entries这个选项,
主项目里面已经加了配置了
参考技术C xml配置文件中 有没有做注入处理!追问有啊,被引用的项目和主项目都做了处理
追答贴配置文件看看!
追问字数限制,贴不了,能QQ聊吗
以上是关于spring jpa使用@service注解时失效提示No bean named 'countryService' is defined的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 项目中配置多数据源@Transactional注解失效问题
spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子
spring data jpa使用spring data jpa时,关于service层一个方法中进行删除和插入两种操作在同一个事务内处理