spring - Spring REST 控制器未启动
问题描述
pom.xml
<groupId>com.ibm.springboot</groupId>
<artifactId>spring-boot-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-api</name>
<description>Spring API DATA</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.14.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
SpringBootApiApplication.java
@SpringBootApplication
@ComponentScan("com.ibm.springboot.*")
@EntityScan("com.ibm.springboot.topics.Topic")
@EnableJpaRepositories("com.ibm.springboot.topics.TopicRepository")
public class SpringBootApiApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApiApplication.class, args);
}
}
主题.java
@Entity
public class Topic {
@Id
private String id;
private String name;
private String description;
public Topic(String id, String name, String description) {
super();
this.id = id;
this.name = name;
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
主题控制器.java
@RestController
public class TopicController {
@Autowired
TopicService topicService;
@RequestMapping("/topics")
public List<Topic> getAllTopics(){
return topicService.getAllTopics();
}
@RequestMapping(method=RequestMethod.POST,value="/topics")
public void addTopic(@RequestBody Topic topic){
topicService.addTopic(topic);
}
}
TopicRepository.java
@Repository
public interface TopicRepository extends CrudRepository<Topic, String>{
}
主题服务.java
@Service
public class TopicService {
@Autowired
TopicRepository topicRepository;
public List<Topic> getAllTopics(){
List<Topic> topics = new ArrayList<>();
topicRepository.findAll().forEach(topics::add);
return topics;
}
public void addTopic(Topic topic){
// topics.add(topic);
topicRepository.save(topic);
}
}
当我运行主类时,我收到以下错误。
应用程序无法启动
描述:
com.ibm.springboot.topics.TopicService 中的字段 topicRepository 需要找不到类型为“com.ibm.springboot.topics.TopicRepository”的 bean。
行动:
考虑在您的配置中定义“com.ibm.springboot.topics.TopicRepository”类型的 bean。
我已经检查了这里给出的所有相关建议,但没有点击。请帮忙
解决方案
从您的界面中删除@Repository
注释。TopicRepository
应该是(没有注释):
public interface TopicRepository extends CrudRepository{
}
编辑
改变你的:
@EnableJpaRepositories("com.ibm.springboot.topics.TopicRepository")
至:
@EnableJpaRepositories(basePackageClasses= {com.ibm.springboot.topics.TopicRepository.class})
推荐阅读
- python - 为什么这个递归映射函数会使用所有可用内存?
- python - 如何使用 url 下载带有名称的图像?
- c# - 让 Serilog 与依赖注入一起工作很热吗?
- reactjs - 有人可以详细解释或提供视频链接,可以帮助我了解如何在反应中对 mongodb 进行排序
- stanford-nlp - 无法从 StanfordOpenIE 中提取置信度
- php - 尝试在 php 中生成 sha3-512 哈希
- java - 尝试提取当前微调器项时出现 Kotlin UninitializedPropertyAccessException
- android - 当应用程序被杀死时,AlarmManager 不会一直工作
- arrays - 无法将数据从文件复制到结构数组 (c)
- python - Dataproc 退出代码 247