我已经搜索了一下并试图深入研究Jersey source code,但据我所知,泽西岛不支持随着@Ref
注释任意深度嵌套子资源。
这是我的设置:
MemberResource.java
@Component // Spring managed
@Scope("prototype")
@Validated
@Path("/member")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MemberResource extends BaseResource {
@Autowired // Spring is injecting this sub resource
private MemberFriendResource memberFriendResource;
@Path("/{memberId}/friend/")
public MemberFriendResource getMemberFriendResource() {
return memberFriendResource;
}
}
MemberFriendResource.java
@Component // Spring managed
@Scope("prototype")
@Validated
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MemberFriendResource extends BaseResource {
@GET
public JResponse<FriendListRepresentation> getAllFriends() {
// Code
}
@GET
@Path("/recent")
public JResponse<FriendListRepresentation> getRecentFriends() {
// Code
}
}
MemberRepresentation.java
public class MemberRepresentation {
@Ref(resource=MemberResource.class, method="getMemberFriendResource", bindings = {
@Binding(name="memberId", value="${instance.id}")
})
public URI allFriendsURI;
@Ref(resource=MemberResource.class, method="??????????", bindings = {
@Binding(name="memberId", value="${instance.id}")
})
public URI recentFriendsURI;
}
我希望动态生成recentFriendsURI
,就像allFriendsURI
一样(它本身确实有效,只是为了清楚)。我意识到我可以手动键入路径,沿@Ref(value="/member/{memberId}/friend/recent", etc)
行,但我强烈地,强烈不希望在每个需要链接的随机表示中硬编码我的路径字符串
对于使用资源/方法范例正确绑定的变量注入的子资源方法的URI是否可以使用URI而不是键入String路径?
我相信this question正试图取得类似但略有不同的结果 我认为This other question是我问题的一个更具体的形式。我正在寻找一种解决方案,它不会对路径进行硬编码,而且可以任意深入。