gpt4 book ai didi

spring-boot - JpaRepository 在与 componentscan 分开的包中时未实现/注入(inject)

转载 作者:行者123 更新时间:2023-12-03 23:56:53 25 4
gpt4 key购买 nike

我有一个 JpaRepository 接口(interface),当它位于与包含 @ComponentScan 的主类不同的包中时,它没有被 Spring 数据实现(或注入(inject)?)。

我的包结构(仅用于演示错误):

- org.demo.jpa.myapp
Application.java
- org.demo.jpa.repo
MyDomainObject.java
MyRepository.java

MyRepository.java
public interface MyRepository extends JpaRepository<MyDomainObject, Long> { }

应用程序.java
@Configuration
@ComponentScan(basePackages="org.demo.jpa")
@EnableAutoConfiguration
public class Application {

public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
if (context.getBean(MyRepository.class) == null){
throw new NullPointerException("repo was not initialized!");
}
}
}

异常(exception)
Exception in thread "main" 2014-09-01 11:20:26.336  INFO 6156 --- [           main] org.demo.jpa.myapp.Application           : Started Application in 2.824 seconds (JVM running for
3.362)
2014-09-01 11:20:26.339 INFO 6156 --- [ Thread-1] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContex
t@5d50b632: startup date [Mon Sep 01 11:20:23 EDT 2014]; root of context hierarchy
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.demo.jpa.repo.MyRepository] is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:319)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:985)
at org.demo.jpa.myapp.Application.main(Application.java:17)

当 MyRepository 和 MyDomainObject 与 Application 类在同一个包中时,不会引发此错误。

这是使用 spring-boot-starter-parent 1.1.5.RELEASE 和 spring-boot-starter-data-jpa。

最佳答案

这可能是预期的行为(见 docs here )。包含 @EnableAutoConfiguration 的包实际上是两个 @EnableJpaRepostories 的默认猜测和 @EntityScan .如果这些包与主 autoconfig 包分离,您将需要两者。

关于spring-boot - JpaRepository 在与 componentscan 分开的包中时未实现/注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25609164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com