我正在使用SpringBoot和JPA。我收到了eg. holder.setText("Hello World");
无法完成的错误。
这是我的主要课程:
@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
这是错误消息:
使用name' requestLoggerImpl'创建bean时出错:注册自动连接的依赖项失败;
无法自动装配字段:private com.repository.RequestLogDao com.logger.impl.RequestLoggerImpl.requestLogDao;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[com.repository.RequestLogDao]的限定bean用于依赖:预期至少有1个bean符合此依赖关系的autowire候选资格。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
我无法找出它为什么不能自动装配。我尝试在我的主课程中添加package com.repository;
public interface RequestLogDao extends CrudRepository<RequestLog, Integer> {
}
,但这不起作用。有什么建议?提前谢谢!
答案 0 :(得分:1)
删除两者
@Configuration
@ComponentScan({"com.repository"})
来自RequestLoggerImpl的
从主类中删除@EnableJpaRepositories(basePackages="com.repository")
。并将主类直接移到com
包
我认为,你添加了spring-boot-starter-data-jpa
个依赖
答案 1 :(得分:1)
对于您的请求记录器,请先删除配置和组件扫描
package com.logger.impl;
@Component
public class RequestLoggerImpl implements RequestLogger {
@Autowired
private RequestLogDao requestLogDao;
}
由于你已经放置了一个@Configuration,我假设你需要一个配置类,所以你可以创建一个这样的:
@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 {
// ...
}
最后检查您的依赖项。
答案 2 :(得分:-3)
你有一个实现RequestLogDao
的具体类吗?我没有看到一个。
您需要拥有一个(Java类),并且需要在应用程序上下文中创建它的实例。