java - 没有实现的接口可以在spring boot的服务类中自动装配吗
问题描述
我在 youtube 上观看了一个春季教程视频,他没有实现,他 public interface TopicRepository extends CrudRepository<Topic, String>
仍然可以通过编写来运行应用程序
@Autowired
private TopicRepository topicRepository;
在服务类中,但是当我尝试相同时,我收到如下错误:
io.spring.springbootstarter.topic.TopicService 中的字段 topicRepository 需要找不到类型为“io.spring.springbootstarter.topic.TopicRepository”的 bean。
注入点有以下注解:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
行动:
考虑在你的配置中定义一个 'io.spring.springbootstarter.topic.TopicRepository' 类型的 bean。
我是 spring 新手,我正在使用 spring 2.3.1
package io.spring.springbootstarter.topic;
import org.springframework.data.repository.CrudRepository;
public interface TopicRepository extends CrudRepository<Topic, String>{
//getTopics()
//getTopic(String id)
//deleteTopic(String id)
//updateTopic(Topic t)
}
在下面的课程中,我正在创建对象
package io.spring.springbootstarter.topic;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TopicService {
@Autowired
private TopicRepository topicRepository;
public List<Topic> getAllTopics(){
List<Topic> topics=new ArrayList<Topic>();
topicRepository.findAll().forEach(topics::add);
return topics;
}
public Optional<Topic> getTopic(String id) {
return topicRepository.findById(id);
}
public void addTopic(Topic topic) {
topicRepository.save(topic);
}
public void updateTopic(String id , Topic topic) {
topicRepository.save(topic);
}
public void deleteTopic(String id) {
topicRepository.deleteById(id);
}
}
解决方案
扩展接口CrudRepository
由 Spring 使用Spring Expression Language实现(自动生成) 。自动生成的类是 spring-beans,因此可以自动装配。
您可以在 Spring官方文档中找到有关 Spring Data Repositories 的更多信息。
推荐阅读
- flutter - Flutter - 如何使用键盘上的推荐词功能
- c# - 在 C# 中使用正文休息 GET 请求
- postgresql - 如何在 postgresql 数据库中应用队列机制?
- python - 如果文件已经打开,则使用 python 关闭 excel 文件
- amazon-web-services - Kinesis CMK 手动轮换 - 我可以每月手动分配别名来流式传输和轮换密钥吗?
- flutter - Flutter ListView.builder 和 Wrap 小部件
- java - 从 Java 方法(位于 DAO 层)调用存储过程(将记录插入 lsa_user_info 表)时获取 PSQLException
- javascript - 参数不符合javascript时如何不打开文件上传
- python - 用于将文件和目录从一台远程服务器复制到另一台远程服务器的 Python 脚本
- java - 使用 findViewWithTag 和 getTag 时应用程序崩溃