gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:35:18 25 4
gpt4 key购买 nike

我有一个存储库,通过它我可以从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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com