我遇到了一个问题,在服务器启动时,定义的存储库没有被正确地解释为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);
}
错误码:
*申请启动失败* 描述: 字段userRepository在lab14.panoslab.Controllers.RegisterController中需要一个无法找到的'lab14.panoslab.Repositories.UserRepository‘类型的bean。 操作: 考虑在您的配置中定义'lab14.panoslab.Repositories.UserRepository‘类型的bean。 进程已完成,退出代码为%1
发布于 2018-09-18 00:00:58
您确定您的类Account
实现了接口User
吗?
并尝试删除注释@Repository
,并在您的DemoApplication
类中添加注释@EntityScan
和@EnableJpaRepositories
:
@SpringBootApplication
@EntityScan({"lab14.panoslab.Models"})
@EnableJpaRepositories({"lab14.panoslab.Repositories"})
public class DemoApplication {...}
另外,我建议您将所有包重命名为小写,并返回一个值List<Account>
,而不是List<User>
。
发布于 2018-09-18 01:04:26
我确实面临着类似的问题。我所犯的错误是,我将控制器/存储库和其他组件包放置在主类包之外。因此,Spring引导无法识别我的组件,
For Ex:主类包是包com.example.demo;
控制器包,如,包com.example.controller;
存储库包,如,包com.example.repository;
下面的是解决这个问题的两种不同方法--,
在@ComponentScan中显式定义我的组件包,如@ComponentScan(basePackages="com.example.controller,com.example.repository")中包含所需组件的基本包。
否则,您可以在主包中创建Controller/存储库包。因此,您不需要定义@ComponentScan和所有这些。为了前夫,
主类包是包com.example.demo;
控制器包,如,包com.example.demo.controller;
存储库包,如,包com.example.demo.repository;
https://stackoverflow.com/questions/52377020
复制