"No qualifying bean" 用于 Groovy Spring JPA 应用程序中的存储库
"No qualifying bean" for repository in Groovy Spring JPA application
我知道有 一堆 关于这个主题的类似问题,但是到目前为止我发现的所有问题要么不完全是我的情况,要么参考一个根据我的阅读,以下解决方案中的一些已过时或不适用:
- @EnableJpaRepositories 注释 - 由@SpringBootApplication
处理
- @Repository 注释 - 扩展 Repository 接口时不需要
错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean
of type 'com.package.repository.ChannelBalanceAdjustmentRepository' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
还有一条错误信息:
CashReinvestDividendSpec > test FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at AutowiredAnnotationBeanPostProcessor.java:659
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at AutowiredAnnotationBeanPostProcessor.java:659
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException at DefaultListableBeanFactory.java:1790
存储库:
package com.package.repository
import com.package.domain.Channel
import com.package.domain.ChannelBalanceAdjustment
import org.springframework.data.repository.CrudRepository
import java.time.LocalDate
interface ChannelBalanceAdjustmentRepository extends CrudRepository<ChannelBalanceAdjustment, Long>{
ChannelBalanceAdjustment findByTypeAndChannelAndValueDate(ChannelBalanceAdjustment.Type type, Channel channel, LocalDate valueDate)
}
申请class:
package com.package
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
class ProcessPendingDividendsApplication {
static void main(String[] args) {
SpringApplication.run(ProcessPendingDividendsApplication, args)
}
}
从使用存储库的地方摘录:
package com.package.service
// imports
@Service
@Slf4j
class ProcessingPendingDividendsService {
@Autowired
ChannelBalanceAdjustmentRepository channelBalanceAdjustmentRepository
它用于 Spock 测试我是 运行:
@SpringBootTest
@Transactional
@AutoConfigureTestDatabase
@AutoConfigureTestEntityManager
class CashReinvestDividendSpec extends Specification{
@Autowired
CashReinvestDividendRepository cashReinvestDividendRepository
@Autowired
TestEntityManager entityManager
def "test" () {
我可以添加任何其他需要的东西,但不想用不相关的东西把问题搞得一团糟。
纳什
您是否在分享实际的 code/error 片段
很少观察
- 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有合格的 bean
类型 'com.package.repository.ChannelBalanceAdjustmentRepository'
你怎么能有一个包含包的包名..它是一个 reserverd 关键字,将不会被允许。
- 您的存储库位于不同的包中并且没有 public 关键字如何在服务包中访问它。
仔细检查您的实体。我以前见过这个,jpa 存储库必须引用正确配置的实体,如果实体对象缺少 @Entity 或其中一列配置不正确,它会抛出红色鲱鱼错误。
我知道有 一堆 关于这个主题的类似问题,但是到目前为止我发现的所有问题要么不完全是我的情况,要么参考一个根据我的阅读,以下解决方案中的一些已过时或不适用:
- @EnableJpaRepositories 注释 - 由@SpringBootApplication 处理
- @Repository 注释 - 扩展 Repository 接口时不需要
错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean
of type 'com.package.repository.ChannelBalanceAdjustmentRepository' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
还有一条错误信息:
CashReinvestDividendSpec > test FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at AutowiredAnnotationBeanPostProcessor.java:659
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at AutowiredAnnotationBeanPostProcessor.java:659
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException at DefaultListableBeanFactory.java:1790
存储库:
package com.package.repository
import com.package.domain.Channel
import com.package.domain.ChannelBalanceAdjustment
import org.springframework.data.repository.CrudRepository
import java.time.LocalDate
interface ChannelBalanceAdjustmentRepository extends CrudRepository<ChannelBalanceAdjustment, Long>{
ChannelBalanceAdjustment findByTypeAndChannelAndValueDate(ChannelBalanceAdjustment.Type type, Channel channel, LocalDate valueDate)
}
申请class:
package com.package
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
class ProcessPendingDividendsApplication {
static void main(String[] args) {
SpringApplication.run(ProcessPendingDividendsApplication, args)
}
}
从使用存储库的地方摘录:
package com.package.service
// imports
@Service
@Slf4j
class ProcessingPendingDividendsService {
@Autowired
ChannelBalanceAdjustmentRepository channelBalanceAdjustmentRepository
它用于 Spock 测试我是 运行:
@SpringBootTest
@Transactional
@AutoConfigureTestDatabase
@AutoConfigureTestEntityManager
class CashReinvestDividendSpec extends Specification{
@Autowired
CashReinvestDividendRepository cashReinvestDividendRepository
@Autowired
TestEntityManager entityManager
def "test" () {
我可以添加任何其他需要的东西,但不想用不相关的东西把问题搞得一团糟。
纳什 您是否在分享实际的 code/error 片段 很少观察
- 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有合格的 bean 类型 'com.package.repository.ChannelBalanceAdjustmentRepository' 你怎么能有一个包含包的包名..它是一个 reserverd 关键字,将不会被允许。
- 您的存储库位于不同的包中并且没有 public 关键字如何在服务包中访问它。
仔细检查您的实体。我以前见过这个,jpa 存储库必须引用正确配置的实体,如果实体对象缺少 @Entity 或其中一列配置不正确,它会抛出红色鲱鱼错误。