为了账号安全,请及时绑定邮箱和手机立即绑定

Bean 创建的 Spring Server 问题

Bean 创建的 Spring Server 问题

MM们 2021-09-26 19:27:55
我遇到了一个问题,其中定义的存储库在服务器启动时没有被正确解释为 bean。带有@SpringBootApplication 的类位于比定义的存储库更高的目录中,所以我找不到它不配置的原因。@SpringBootApplication:package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Date;import java.util.Properties;@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {    SpringApplication.run(DemoApplication.class, args);    System.out.println("http://localhost:8080");}}存储库package lab14.panoslab.Repositories;import lab14.panoslab.Models.Account;import org.apache.catalina.User;import org.hibernate.annotations.NotFound;import org.hibernate.annotations.NotFoundAction;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;import java.util.List;@Repositorypublic interface UserRepository extends JpaRepository<Account,Long> {    @NotFound(action = NotFoundAction.IGNORE)List<User> findByUsername(String username);}错误代码:**************************** 应用程序无法启动******************* ********描述:lab14.panoslab.Controllers.RegisterController 中的字段 userRepository 需要一个无法找到的类型为“lab14.panoslab.Repositories.UserRepository”的 bean。行动:考虑在您的配置中定义一个类型为“lab14.panoslab.Repositories.UserRepository”的 bean。进程以退出代码 1 结束
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

你确定你的类Account实现了接口User吗?


并尝试删除@Repository注释@EntityScan并@EnableJpaRepositories在您的DemoApplication类中添加注释:


@SpringBootApplication

@EntityScan({"lab14.panoslab.Models"})    

@EnableJpaRepositories({"lab14.panoslab.Repositories"})

public class DemoApplication {...}

另外,我建议您将所有包重命名为小写并返回值List<Account>,而不是List<User>。


查看完整回答
反对 回复 2021-09-26
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我确实遇到过类似的问题。我所做的错误是,我将控制器/存储库和其他组件包放在主类包之外。所以,Spring boot 无法识别我的组件,

例如:主类包是包com.example.demo;

控制器包如,包 com.example.controller;

存储库包,如包 com.example.repository;

以下是解决此问题的两种不同方法

在@ComponentScan 中显式定义我的组件包,例如@ComponentScan(basePackages="com.example.controller,com.example.repository")以及所需组件的基本包。

否则,您可以在主包中创建控制器/存储库包。因此,您无需定义@ComponentScan等。例如,

主类包是包com.example.demo;

控制器包如,包com.example.demo.controller;

存储库包,如包 com.example.demo.repository;


查看完整回答
反对 回复 2021-09-26
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信