猿问

Bean 创建的 Spring Server 问题

我遇到了一个问题,其中定义的存储库在服务器启动时没有被正确解释为 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;


@SpringBootApplication

public 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;


@Repository

public 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 结束


MM们
浏览 179回答 2
2回答

小唯快跑啊

你确定你的类Account实现了接口User吗?并尝试删除@Repository注释@EntityScan并@EnableJpaRepositories在您的DemoApplication类中添加注释:@SpringBootApplication@EntityScan({"lab14.panoslab.Models"})&nbsp; &nbsp;&nbsp;@EnableJpaRepositories({"lab14.panoslab.Repositories"})public class DemoApplication {...}另外,我建议您将所有包重命名为小写并返回值List<Account>,而不是List<User>。

叮当猫咪

我确实遇到过类似的问题。我所做的错误是,我将控制器/存储库和其他组件包放在主类包之外。所以,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;
随时随地看视频慕课网APP

相关分类

Java
我要回答