我是sparkjava的新手,并且总体上喜欢它。但是,是否必须在main方法中定义新的路由/端点?对于任何重要的Web应用程序,这将导致非常长的main方法,或者我需要多个main方法(因此,将服务器资源分配到多个实例中)。

这两个sparkjava文档页面似乎在main方法中定义了路由:http://sparkjava.com/documentation.html#routes和此处的http://sparkjava.com/documentation.html#getting-started

还有另一种我看不到的方法吗? Google的Cursory搜索还没有向我展示一种更好的方法...

=========

这是我根据安德鲁的回答所做的完整解决方案。我认为,在main方法之外添加端点应该是sparkjava文档页面的一部分:

主要方法:

public static void main(String[] args) {
    //Do I need to do something more with the Resource instance so that sparkjava notices it and/or reads the routes?
    Resource resource= new Resource(new Service());
}

我的资源:
import static spark.Spark.*;
class Resource{

    private Service service;

    Resource(Service service){
        this.service = service;
        setupEndpoints();
    }

    private void setupEndpoints() {

        get("/user/:id", "application/json",(request, response)
                -> service.find(request.params(":id")), new JsonTransformer());

        get("/users", "application/json", (request, response)
                -> service.findAll(), new JsonTransformer());
    }
}

我的服务:
public class Service {

    public Object find(String id) {
        return null;
    }

    public Object findAll() {
        return null;
    }
}

我的JsonTransformer:
import spark.ResponseTransformer;
public class JsonTransformer implements ResponseTransformer {
    @Override
    public String render(Object model) throws Exception {
        return null;
    }
}

最佳答案

您可以在所需的地方设置路线。您只需要在主线程中建立调用方法。例如

 public static void main(String[] args){
     Resource resource= new Resource(new Service());
 }

 class Resource{

    private Service service;

    Resource(Service service){
      this.service = service;
      setupEndpoints();
    }

    private void setupEndpoints() {

      get("/user/:id", "application/json",(request, response)
            -> service.find(request.params(":id")), new JsonTransformer());

      get("/users", "application/json", (request, response)
            -> service.findAll(), new JsonTransformer());
    }
 }

10-08 01:05