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

SpringBoot CRUD存储库无法自动连线

慕容修伟
2023-03-14

我与SpringBoot和JPA合作。我收到一个无法完成的@Autowired错误。

这是我的主要课程:

package com;

@SpringBootApplication
@EnableJpaRepositories(basePackages="com.repository")
public class InitBatch implements CommandLineRunner {

    @Autowired
    private Batch batch;

    @Autowired
    private CareDao careDAO;


    @Override
    public void run(String... args) throws Exception {
        careDAO.setMessageSource(messageSource());      
        batch.processFiles();   
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(InitBatch.class, args).close();
        System.out.println("Finish");
    }


    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

        messageSource.setBasename("file:/config/instances");
        messageSource.setCacheSeconds(100);
        return messageSource;
    }   
}

这是我的班级失败的原因:

package com.logger.impl;

@Configuration
@ComponentScan({"com.repository"})

@Component
public class RequestLoggerImpl implements RequestLogger {

    @Autowired
    private RequestLogDao requestLogDao;

}

这是RequestLogDao类:

package com.repository;
public interface RequestLogDao extends CrudRepository<RequestLog, Integer> {

}

这是错误消息:

错误创建bean的名称'请求LoggerImpl':注入自动生成的依赖失败;

无法自动关联字段:专用com。存储库。请求logdao.com。记录器。impl。RequestLoggerImpl。请求logdao;嵌套的异常是org。springframework。豆。工厂NoSuchBeanDefinitionException:找不到依赖项类型为[com.repository.RequestLogDao]的符合条件的bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我就是不明白为什么它不能自动连线。我曾尝试在我的主类中添加@EnableJpaRepositories,但没有成功。有什么建议吗?提前谢谢!

共有3个答案

桓宜
2023-03-14

您是否有一个实现RequestLogDao的具体类?我没看到。

您需要有一个(Java类),并且需要在应用程序上下文中提供它的实例。

燕和同
2023-03-14

两个都去掉

@Configuration
@ComponentScan({"com.repository"}) 

从RequestLoggerImpl

并从主类中删除@EnableJpaRepositories(basePackages=“com.repository”)。并将主类移动到com包的正下方

我假设,您添加了sping-boo-starter-data-jpa依赖项

濮阳振海
2023-03-14

对于请求记录器,请先删除配置和组件扫描

package com.logger.impl;

@Component
public class RequestLoggerImpl implements RequestLogger {

    @Autowired
    private RequestLogDao requestLogDao;

}

既然您已经放置了@Configuration,我想您将需要一个config类,这样您就可以创建这样一个类:

@Configuration
@EnableJpaRepositories(basePackages = {"com.repository"}
public class MyConfiguration {
    // possibly your Bean declarations here
    // like dataSource, transactionManager etc.. related to your jpa repo
    // as needed
}

注意你的基本包装在这里;因为它将用于:

package com.repository;

@Repository
public interface RequestLogDao extends CrudRepository<RequestLog, Integer> {
    // ...
}

最后在你的主课上

@SpringBootApplication // scan base packages for autowiring as needed
public class InitBatch implements CommandLineRunner {
    // ...
}

最后检查您的依赖关系。

 类似资料:
  • 我在Spring Boot上还是新手,我在mongoDB数据库中使用Spring-Boot添加了一个名为文章的文档,我想在该文章中添加注释。但是Spring-boot不能在我的应用程序中自动连接我的存储库。 下面是我的Repository类,它实现了ArticleRepositoryCustom接口,该接口包含一个OuterComment方法。 文章库 这是我的Springboot应用程序课程 当

  • 我正在试验Spring和MongoDB。在我的项目中,我有一个存储库和一个有调度方法的服务。问题是,存储库没有自动运行,它总是为空。 Autowire在主应用程序类中正常工作(通过实现CommandLineRunner进行测试) 我错过什么了吗? 目录 机器应用。JAVA 工人JAVA LineDataRepository

  • 我已经用@Autowired注释为相应的存储库定义了服务类 存储库接口定义为从JpaReepository扩展 应用程序自动编译服务类 运行时,我得到以下错误

  • 问题内容: 我正在尝试在github仓库上连接詹金斯。 当我指定Repo URL jenkins时,返回以下错误消息: 无法连接到存储库:命令“ git ls-remote -h git@github.com:adolfosrs / jenkins-test.git HEAD”返回状态码128:stdout:stderr:主机密钥验证失败。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并

  • 我显然遗漏了一些东西。我正在制作一个简单的应用程序,其中包含并面临以下错误: 我的代码: 应用程序: pom.xml 控制器: 人事服务: 个人服务: PersonRepository(此存储库不能自动连接): 已经在网上搜索了。我什么都没找到。有什么想法吗?

  • 我已经将应用程序和存储库接口的所有实体打包到一个jar中。存储库是用@Repository注释编写的: 我已经在我的Spring启动应用程序中包含了这个jar文件,并试图像这样从控制器自动连接接口: 我的主要应用程序类是这样编写的: 存储库没有自动连接。当我启动Spring boor应用程序时,我得到以下错误: 有人尝试过类似的架构吗?