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

org.sf.beans.factory.NoSuchBeanDefinitionException

org.sf.beans.factory.NoSuchBeanDefinitionException

暮色呼如 2021-11-11 14:10:33
我正在尝试在 Spring Boot 中使用 Hibernate 作为 JPA 的用户存储库设置一个简单的项目,我尝试了这个和这个教程,并且在这两个(以及任何地方)@SpringBootApplication似乎足以使存储库在整个应用程序的范围内都可以访问,因为它包括@ComponentScan,但就我而言,情况并非如此。即使这个答案看起来适合我的情况,但不是。项目结构project│   └── src│       └── main│           └── java│               └── medisam|                    └── Application.java│   └── src│       └── main│           └── java│               └── medisam│                   └── entity│                       └── User.java|                       └── UserRepository.java│    └── src│        └── main│            └── java│               └── medisam│                   └── controller│                       └── MainController.java有了这样的结构和这段代码:@SpringBootApplicationpublic class Application {    ...    private static final Logger LOG = LoggerFactory.getLogger(Application.class);    @Autowired    private UserRepository repo;    public static void main(String args[]) {        SpringApplication.run(Application.class, args);    }    ...}我得到:...创建名为 “应用程序”的 bean 时出错:通过字段“repo”表达的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException :没有 可用的“medisam.entity.UserRepository” 类型的合格 bean :预计至少有 1 个 bean 有资格作为 自动装配 候选。依赖注解: {@org.springframework.beans.factory.annotation.Autowired(required=true)} ...只有当我这样做时:@ComponentScan(basePackages = {"medisam.controller", "medisam.entity"})@EntityScan({"medisam.entity"})@EnableJpaRepositories(basePackages = {"medisam.entity"})public class Application {    ...    private static final Logger LOG = LoggerFactory.getLogger(Application.class);    @Autowired    private UserRepository repo;    public static void main(String args[]) {        SpringApplication.run(Application.class, args);    }    ...}我得到了一个工作代码,但是,如果真的有一种方法可以实现这一点@SpringBootApplication,我想使用它。会不会@SpringBootApplication是扫描不正确?请帮忙
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

我在 gihub 上查看了您的代码,发现您在 classApplication.java和ServiceResponse.java.


请导入主包,package medisam;而不是package hello;.


像下面这样:


您的应用程序类:


package medisam;

import medisam.entity.UserRepository;

import nz.net.ultraq.thymeleaf.LayoutDialect;

import nz.net.ultraq.thymeleaf.decorators.strategies.GroupingStrategy;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Description;

import org.springframework.web.servlet.view.InternalResourceViewResolver;

import org.springframework.web.servlet.view.JstlView;

import org.thymeleaf.extras.java8time.dialect.Java8TimeDialect;

import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect;

import org.thymeleaf.spring5.SpringTemplateEngine;

import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;

import org.thymeleaf.spring5.view.ThymeleafViewResolver;

import org.thymeleaf.templatemode.TemplateMode;

import org.thymeleaf.templateresolver.ITemplateResolver;

import org.thymeleaf.templateresolver.UrlTemplateResolver;


@SpringBootApplication

public class Application {

这是您的 ServiceResponse


package medisam;


import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import org.apache.catalina.util.ResourceSet;


import java.util.ArrayList;

import java.util.List;


@JsonIgnoreProperties(ignoreUnknown = true)

public class ServiceResponse {


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

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