【发布时间】:2017-03-28 21:04:57
【问题描述】:
我正在使用 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 时出错:注入自动装配的依赖项失败;
无法自动装配字段:private 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,但这不起作用。有什么建议?提前致谢!
【问题讨论】:
-
首先,您不应该将您的
RequestLoggerImpl注释为@Configuration——它是一个服务bean,而不是一个配置类。
标签: java spring spring-boot spring-data-jpa