[英]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.