我遇到一个问题,即定义的存储库在服务器启动时没有被正确解释为 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);
}
错误代码:
*************************** APPLICATION FAILED TO START***************************
Description:
Field userRepository in lab14.panoslab.Controllers.RegisterController required a bean of type 'lab14.panoslab.Repositories.UserRepository' that could not be found.
Action:
Consider defining a bean of type 'lab14.panoslab.Repositories.UserRepository' in your configuration.
Process finished with exit code 1
最佳答案
你确定你的类(class)Account
实现接口(interface) User
?
并尝试删除注释 @Repository
并添加注释@EntityScan
和@EnableJpaRepositories
在你的DemoApplication
类:
@SpringBootApplication
@EntityScan({"lab14.panoslab.Models"})
@EnableJpaRepositories({"lab14.panoslab.Repositories"})
public class DemoApplication {...}
此外,我建议您将所有包重命名为小写并返回值 List<Account>
,不是List<User>
.
关于java - Spring 服务器 Bean 创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52377020/