使MessageBodyWriter不使用资源类,并且不返回资源一中的子资源类

时间:2019-07-19 13:12:54

标签: java spring rest jersey jax-rs

我想创建rest api。我不想在每个资源类中都使用绝对路径重复我自己,所以我想将其分层。 因此,而不是像这样:

@Path("/")
@Component
@Scope("request")
public class UsersResource extends Application {

    @GET @Path("users/{id}/roles") 
    public Role usersResource(@PathParam("id") Long id) {
    }
}

我想返回依赖资源,例如:

@Component
@Scope("request")
public class UsersResource {
    @Inject private UserRolesResource userRolesResource;

    @GET @Path("{id}/roles") public UserRolesResource getRolesResource(@PathParam("id") Long id) {
        return userRolesResource.withUserId(id);
    }
}


@Component
@Scope("request")
public class UserRolesResource {
    private Long userId;

    @GET public String getAll() {
        return userId + "=r1, r2, r3";
    }

    @GET @Path("{id}") public String getById(@PathParam("id") Long id) {
        return "userId " + userId + "roleId=" + id;
    }

    public UserRolesResource withUserId(Long userId) {
        this.userId = userId;
        return this;
    }
}

如您所见,我正在尝试返回UserRolesResource类,而不是数据。现在,我想球衣/ jaxrs不要序列化Resource类,而是应该将控制权移交给返回的资源,并在那里可以正确处理和序列化。

我在搭配靴子和运动衫时使用弹簧靴。

我无法看到正在运行的解决方案,可能只是缺少了一些body writer配置。

预先感谢

1 个答案:

答案 0 :(得分:0)

哦,在我返回子资源的地方,我在子资源条目上输入了@GET注释是非法的:@GET @Path("{id}/roles") public UserRolesResource getRolesResource(@PathParam("id") Long id) { 删除@GET后,它可以正常工作。