You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot JPA无法获取Repository Bean:No qualifying Bean available问题

解决Spring Boot JPA无法获取Repository Bean的问题

我有一个仅包含主类、Repository和实体类的简单Spring Boot JPA项目,此前启动报错已解决,但现在在主类中无法获取Repository Bean,抛出错误:
No qualifying bean of type 'com.d043114.minimalJPA.CityRepository' available

相关代码如下:

Repository代码

package com.d043114.minimalJPA;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface CityRepository extends CrudRepository<City, Long> {

}

实体类代码

package com.d043114.minimalJPA;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "cities")
public class City {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO )
    private long ID;
    
    public long getID() {
        return ID;
    }

    public void setID(long iD) {
        ID = iD;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String name;

}

主类代码

package com.d043114.minimalJPA;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

import com.d043114.minimalJPA.CityRepository;

@EnableJpaRepositories("com.d043114.minimalJPA.*")
@ComponentScan(basePackages = "com.d043114.minimalJPA.*")
@SpringBootApplication
@EntityScan("com.d043114.minimlaJPA")
public class MinimalJpaApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext appcontext = SpringApplication.run(MinimalJpaApplication.class, args);
        
        CityRepository cityRepository = appcontext.getBean(CityRepository.class );

    }

}

问题原因与解决方案

1. 包名拼写错误

主类中@EntityScan注解的包名写错了:com.d043114.minimlaJPA应该是com.d043114.minimalJPA(少了一个字母n),这会导致Spring无法扫描到实体类,进而影响Repository Bean的创建。

2. 多余注解导致的扫描异常

@SpringBootApplication注解本身已经包含了@ComponentScan、@EnableAutoConfiguration,并且默认会扫描主类所在包及其子包下的所有组件、Repository和实体类,所以额外添加的@EnableJpaRepositories、@ComponentScan完全是多余的,甚至可能因为通配符写法(com.d043114.minimalJPA.*)导致扫描范围出错。

修正后的主类代码

package com.d043114.minimalJPA;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import com.d043114.minimalJPA.CityRepository;

@SpringBootApplication
public class MinimalJpaApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext appcontext = SpringApplication.run(MinimalJpaApplication.class, args);
        
        CityRepository cityRepository = appcontext.getBean(CityRepository.class );

    }

}

修正后,Spring会自动扫描到com.d043114.minimalJPA包下的Repository和实体类,成功创建对应的Bean,就能正常获取CityRepository实例了。

内容的提问来源于stack exchange,提问作者Habi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:45:49