我的课程如下: -
@SpringBootApplication
@ComponentScan("com.ma.demospringboot")
public class DemoSpringBootApp {
public static void main(String[] args) {
SpringApplication.run(DemoSpringBootApp.class, args);
}
}
我的课程如下: -
@Service
public class TopicService {
// if I comment out following autowired, then it is ok.
@Autowired
private TopicRepository topicRepository;
}
我有以下界面: -
public interface TopicRepository extends CrudRepository<Topic, String> {
}
我的课程如下: -
@Entity
public class Topic {
@Id
private String id;
private String name;
private String description;
public Topic() {
}
}
尝试执行时出现以下错误: -
申请失败
说明
com.ma.demospringboot.service.TopicService中的字段topicRepository 需要一个类型的bean 'com.ma.demospringboot.repository.TopicRepository'无法做到 找到。
动作:
考虑定义类型的bean 您的“com.ma.demospringboot.repository.TopicRepository” 配置。
答案 0 :(得分:2)
Spring容器在扫描期间没有找到您的存储库类,添加@EnableJpaRepositories
以显式指定存储库类所在的包,如下所示:
@SpringBootApplication
@ComponentScan("com.ma.demospringboot")
@EnableJpaRepositories("com.ma.demospringboot.repository")
@EntityScan(basePackages = "com.ma.demospringboot.domain")
public class DemoSpringBootApp {
//your current code here
}
<强> UPDATE1:强>
不是托管类型:class com.ma.demospringboot.domain.Topic
现在,您的Topic
实体类未找到,因此您需要@EntityScan(basePackages = "com.ma.demospringboot.domain")
来扫描实体类(如上所示)。
<强> UPDATE2:强>
我完全按照你的建议做了,但没有工作
您打包类的方式存在问题,请仔细检查,同时确保已编译/构建最新的类。由服务器使用。
答案 1 :(得分:1)
您的Spring
容器无法找到并识别您的JPA存储库。
在@EnableJpaRepositories("com.ma.demospringboot.repository")
课程
DemoSpringBootApp
@SpringBootApplication
@ComponentScan("com.ma.demospringboot")
@EnableJpaRepositories("com.ma.demospringboot.repository")
public class DemoSpringBootApp {
public static void main(String[] args) {
SpringApplication.run(DemoSpringBootApp.class, args);
}
}
答案 2 :(得分:0)
在ApplicationContext.xml中添加以下代码
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />