簡體   English   中英

SpringBoot CRUD存儲庫無法自動連線

[英]SpringBoot CRUD Repository fail to Autowire

我正在使用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> {

}

這是錯誤消息:

創建名稱為'requestLoggerImpl'的bean時出錯:自動連接依賴項的注入失敗;

無法自動連線欄位:私人com.repository.RequestLogDao com.logger.impl.RequestLoggerImpl.requestLogDao; 嵌套的異常是org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有找到類型為[com.repository.RequestLogDao]的合格Bean作為依賴項:預計至少有1個Bean可以作為此依賴項的自動裝配候選。 依賴項注釋:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

我只是不知道為什么它不能自動接線。 我嘗試在主類中添加@EnableJpaRepositories ,但這沒有用。 有什么建議么? 提前致謝!

對於您的請求記錄器,請先刪除配置和組件掃描

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 {
    // ...
}

最后檢查您的依賴項。

同時刪除

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

來自RequestLoggerImpl

並從主類中刪除@EnableJpaRepositories(basePackages="com.repository") 並將主要類別移至com套件的正下方

我想,您已經添加了spring-boot-starter-data-jpa依賴項

您是否有一個實現RequestLogDao的具體類? 我沒看到。

您需要擁有一個(Java類),並且需要使其實例在應用程序上下文中可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM