java - 存储库对象未在服务类中 Autowiring

标签 java spring spring-boot elasticsearch-5

我有一个存储库,通过它我可以从Elasticsearch获取数据。当我发送 GEt 请求时,它工作正常。 我需要来自 Elasticsearch 的数据,而无需发送 GET 请求,我已为其编写了 Service 并在 Service< 中注释了该存储库 使用 @Autowired 的类。
存储库

@Repository
public interface RecipeDtoRepository extends 
ElasticsearchRepository<RecipeDto, Integer> {}

Controller

@RestController
@RequestMapping("/repo")
public class RecipeRepoController {
@Autowired
public RecipeDtoRepository recipeDtoRepository;

@GetMapping("/all")
public String getRecipes() {
    List<RecipeDto> recipe_list = new ArrayList<>();
    recipeDtoRepository.findAll().forEach(recipe_list::add);
    return recipe_list.toString();
}

服务

@Service
@Component
public class ClusterService implements ApplicationContextAware {
  @Autowired
public RecipeDtoRepository recipeDtoRepository;
List<RecipeDto> recipe_list = new ArrayList<>();
   new ClusterService(). applicationContext.getBean(RecipeRepoController.class).recipeDtoRepository.findAll().forEach(recipe_list::add);
}
@Override
public void setApplicationContext(ApplicationContext 
applicationContext) throws BeansException {
    this.applicationContext = applicationContext;
}

问题 当使用 GET 请求调用 Controller 中的方法时,它工作正常,但是当我使用 Service 类调用它时,它抛出 NullPointerException ,它据我所知不应该。我读过一篇文章,其中建议在 Service 类中获取 Bean ,您可以看到我已经使用 ApplicationContext 完成了它,但它抛出了那个异常(exception)。我在不使用 ApplicationContext 的情况下尝试过,在这种情况下它也会抛出 NullPointerException 。我最近两天一直在研究这个问题,但找不到解决方案。

@Service
@Configurable
public class ClusterService {
@Autowired
public  RecipeDtoRepository recipeDtoRepository;

private  String getRecipes() {
    List<RecipeDto> recipe_list = new ArrayList<>();
    recipeDtoRepository.findAll().forEach(recipe_list::add);
    return recipe_list.toString();
}


public static void main(String[] a) {

    ClusterService clusterService = new ClusterService();
    clusterService.getRecipes();

}}

最佳答案

删除上下文感知,并且不要从 Controller 调用存储库的实例,因为您已经注入(inject)了它 就这样做

public void addThings(){
this.recipeDtoRepository.findAll().forEach(recipe_list::add)
}

关于java - 存储库对象未在服务类中 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977560/

相关文章:

java - 主题错误 - 如何修复?

java - 如何在 Java 中找到 'n' 提升到 'n'

java - 带有 Swing UI 的 Spring-Boot

java - Liquibase 找不到变更日志文件

java - 如何在单元测试中模拟 JPA 存储库的查找方法

java - 如何使用GSON序列化json字符串并从中提取键和值?

没有注释的 Spring MVC - 未找到 HTTP 404 页面错误即将到来

java - Apache shiro - 如何使用单独的数据库表支持多种用户类型

java - Spring MongoDB 聚合组 - 无法正确获取组查询

java - 如何在 GWT TextBox 中检索 PASTE(copy-pasta)事件的值?