当前位置: 首页 > 知识库问答 >
问题:

使用Bean创建的Spring Server问题

苏健柏
2023-03-14

我有一个问题,定义的存储库在服务器启动时没有被正确解释为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中的字段userRepository。全景板。控制器。RegisterController需要“lab14”类型的bean。全景板。存储库。找不到UserRepository。

行动:

考虑定义“lab14”类型的bean。全景板。存储库。配置中的UserRepository。

进程结束,退出代码1

共有2个答案

徐友樵
2023-03-14

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

例如:主类包是包com。实例演示;

类似控制器包的com包。实例控制器;

存储库包,如包com。实例存储库;

下面是解决这个问题的两种不同方法,

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

否则,您可以在主包内创建控制器/存储库包。因此,您不需要定义@ComponentScan和所有内容。对于ex,

主类包是包com。实例演示;

类似控制器包的com包。实例演示。控制器;

存储库包,如包com。实例演示。存储库;

秋阳荣
2023-03-14

您确定您的类帐户实现了接口User吗?

并尝试删除注释存储库,并在您的DemoApplication类中添加注释EntityScan和EnableJpaRepositories

@SpringBootApplication
@EntityScan({"lab14.panoslab.Models"})    
@EnableJpaRepositories({"lab14.panoslab.Repositories"})
public class DemoApplication {...}

此外,我建议您将所有包重命名为小写并返回一个值List

 类似资料:
  • 我想创建一个Spring Bean Factory后处理器,将Bean添加到当前的ApplicationContext中。 我的中有很多Web-Services定义,我想尽可能地减少。 配置如下所示: 因此,我用以下bean定义创建了一个@Configuration类: 这好多了!,但是我想把它减少得更多,所以我想创建一个名为@WebService定义的注释,并添加一个BeanFactoryPos

  • 我正在尝试使用动态创建N个bean。基于这个问题,我选择在我的用例中使用。 我在: 它连接到一个类:https://github.com/ciscoo/dynamicbeans/blob/master/src/main/java/io/mateo/dynamicbeans/FeignConfigurationProperties.java 然后我想注入那个类以及我在这里定义的工厂bean:http

  • 我有一个factory-ish bean,它在启动时创建了许多对象,我希望这些对象本身就是Spring bean。 如果我创建一个对象,我可以使用工厂方法进行实例化,例如(来自Spring文档第4.3.2.3节): 如果我提前知道我有n个对象,我可以调用n个不同的方法,但是我没有——我的工厂创建了任意数量的对象,而这些对象是提前不知道的。 有人知道怎么做吗? 目标是让它们成为“合适的”Spring

  • 我是spring的新手,我正在尝试修改我的应用程序来实现spring框架。我的请求是为每一个新请求创建一个新bean,然后在后面的代码中引用该bean,以便从单个bean中为其设置值。我正在尝试将bean声明为prototype,并使用查找方法在我的单例bean中引用该bean。但我的问题是,当稍后尝试获取创建的原型bean以设置值时,我看到它在获取bean时再次创建新的bean。 下面是我的原型

  • 问题内容: 我使用ektorp连接到CouchDB。 构建ektorp 实例的方法是使用构建器模式: 我对Spring比较陌生。请为我提供有关如何在上下文中配置以便通过进行创建的建议。 一种方法是使用。还有其他选择吗? 问题答案: 您可以尝试实现接口: 并添加到配置以下bean定义: 然后,您可以将此bean注入另一个bean,它将作为实例进行解析。

  • 尝试在这里使用Mapstruct做一些测试。我有以下类: 试验等级 测绘仪 在这里考虑模型 生成的通用MapperImpl: 当我尝试运行测试时,他给出了以下错误: MapperTest中的@Autowire不起作用。它声称:“无法自动连线。找不到“UsuarioMapper”类型的beans。 已尝试: gradle build(无错误) gradle build-x test(无错误) 使缓存