【问题标题】:UnsatisfiedDependencyException in Spring BootSpring Boot 中的 UnsatisfiedDependencyException
【发布时间】:2020-10-19 15:36:23
【问题描述】:

我们在 Spring Boot 中没有获得以下代码类型的合格 bean:

Main class:


package *.*.*;

@SpringBootApplication
public class BankApplication {

    public static void main(String[] args) {
        SpringApplication.run(BankApplication.class, args);
    }

}
package *.*.*.dataaccess.repository;


@Repository
public interface BankRepository extends JpaRepository<BankEntity, String> {

}

package *.*.*.dataaccess.dao;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "Bank")
public class BankEntity {

//fileds
}



package *.*.*.dataaccess.utils;


@Component
public class DBUtils {

    @Autowired
    BankRepository bnRepo;

    
     */
    public void saveBank(BankDto dto) {
        
        //preparing  bnEntity -entity
        
            this.bnRepo.saveAndFlush(bnEntity);     

    }
}

添加以下与 MySQL 相关的依赖项: pom.xml:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.wix/wix-embedded-mysql -->
        <dependency>
            <groupId>com.wix</groupId>
            <artifactId>wix-embedded-mysql</artifactId>
            <version>4.2.0</version>
        </dependency>

测试时出错:

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = { DBUtils.class })
public class BankTest {

    @Autowired
    DBUtils dbUtils;

    @Test
    public void saveAndFlishTest() {

        dbUtils.saveBank(getBankDetails()); // once this is working then will added junit checks using asserts
    }
}

错误详情如下:

原因: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“DBUtils”的 bean 时出错:不满足的依赖关系 通过字段“bnRepo”表示;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 '..*.dataaccess.repository.BankRepository' 类型的限定 bean 可用:预计至少有 1 个符合 autowire 条件的 bean 候选人。依赖注解: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    BankRepository 未创建,因此出现错误 - 没有该类型的 bean,因此没有可注入的内容(通过自动装配)。

    您应该检查以下内容:

    1. Spring 数据已启用
    2. BankRepository 应该驻留在您的 Spring Boot 应用程序中需要进行包扫描的包中

    【讨论】:

    • 所有子 pkg 仅在父 pkg 中。 @马克布拉姆尼克
    • 基本上取决于你的包结构和配置。类路径中有弹簧数据吗? (org.springframework.boot:spring-boot-starter-data-jpa)。插入时的 Spring 数据应根据接口中的存储库定义生成运行时代理,显然这不会发生,因此错误
    • 如何查看Spring数据是否开启? @马克布拉姆尼克
    • 日志可能或启动时的-debug 选项应该为您提供更多信息
    • 通常springboot会自动启用存储库,为什么需要添加呢? @马克布拉姆尼克
    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2020-04-14
    • 2020-05-25
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多