我正在用Spring Boot和Java中的MongoDB制作REST API。

例如,我有一个Location类,以及一个对应的LocationRepository和LocationController类。
要访问位置数据库(LocationRepository),我需要通过LocationController来完成(据我所知)。我在此控制器中具有可在POST / GET请求上运行的功能,当从前端服务器(Nuxt.js w / Axios)发送请求或仅通过Insomnia / Postman发送请求时,它的工作正常。

但是,如果我不想从后端以及程序中的另一个类访问位置数据库,则不确定如何执行此操作。
我想我要么需要在本地发送API请求,要么需要获取LocationController的实际实例以在其上运行函数。

是否像这种不良做法一样在本地发送API请求?

我可以以某种方式持有我的LocationController实例吗?所有这些都是通过Spring进行管理的,我认为它可以在某个地方实例化控制器,但是我不知道在哪里或如何获得它们。

这是我的一个控制器的示例:

@RestController
@RequestMapping("api/locations")
public class LocationController {
    @Autowired
    private LocationRepository repository;

    @RequestMapping(value = "/all", method = RequestMethod.GET)
    public List<Location> getAllLocations(@RequestBody String body) {
        return repository.findAll();
    }

}


感谢任何帮助!

编辑:在需要访问此的任何类中使用@Autowired LocationController locationController似乎有效。

最佳答案

您无需实例化控制器,存储库负责从数据库中获取数据。您可以完全像在控制器内部一样进行操作:

public class MyGreatClass{
    @Autowired
    private LocationRepository repository;
    public void myGreatMethod() {
        List<Location> locations = repository.findAll();
        // Do the stuff with location
    }

10-06 11:18