2014-11-03 4 views
3

Весной у нас есть @ExposesResourceFor аннотация, которая может связывать наш ресурс с другими ресурсами. Благодаря этому наши объекты Value (представления) не могут ничего знать о реальных ресурсах.Есть ли способ связать ресурс JAX-RS с другим ресурсом, например, в Spring HATEOAS?

Есть ли способ сделать это в JAX-RS? Я использую Dropwizard с Джерси и Джексоном и все, что я вижу, это @InjectLinks примечания, которое я могу использовать в объекте значения, как это:

public class UserGroup { 
    @JsonProperty 
    public String name; 

    @InjectLinks(GroupsResource.class) 
    public URI myResource; 

    public UserGroup(String name){ 
     this.name = name; 
    } 
} 

Но к сожалению моих ценности объекты не должны ничего знать о ресурсах, поэтому я m спрашиваю, могу ли я сделать такую ​​ссылку на уровне ресурсов - ссылка весной-ненависти в контроллерах, как упоминалось выше.

ответ

3

С @InjectLinks у вас нет , у которых есть, чтобы объявить ссылки в вашем классе модели. Вы можете создать класс представления «обертка», как показано в declarative-linking от Jersey examples (хотя это решение действительно не на уровне класса ресурсов, как вы пожелаете).

Другое возможное решение (а не декларативного связывания) является использование JAX-RS 2,0 Link класса, и сделать связь программным (без связи с трикотажем реализации/аннотации). Вы можете либо добавить ссылки в свои заголовки ответов, как см. here, либо добавить Link s к классам моделей, как показано here (или использовать класс оболочки для этого также, чтобы не вторгаться в ваши классы моделей)

Некоторые ресурсы

+0

Я решил пойти с подходом заголовка. Благодаря! –