JAX-RS 注册实例作为端点?

问题描述

我有一个与此类似的休息端点类:

@Path("/users")
public class Users {
    private final Database database;

    public Users(Database database) {
        this.database = database;
    }

    @GET
    @Path("/{id}")
    public Response Get(@PathParam("id") int id) {
        User user = this.database.get(id);
        return Response.ok(user).build();
    }
}

还有一个主要的方法

public class Main {
    public static void main(String[] args) {
        Database database = new SomeDBImplementation();
        Users users = new Users(database);
        
        HttpServer server = HttpServerFactory.create("http://localhost:8080");
        server.start();
    }
}

如何让服务器使用用户实例作为端点?我正在使用球衣服务器

解决方法

您需要创建一个 ResourceConfig 实例,然后将其传递给 HttpServerFactory.create(uri,resourceConfig) 方法。 ResourceConfig 有不同的实现。最基本的是DefaultResourceConfig。要注册资源实例,您只需

ResourceConfig config = new DefaultResourceConfig();
config.getRootResourceSingletons().add(users);
HttpServer server = HttpServerFactory.create(uri,config);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...