2015-02-02 3 views
0

Я работаю над проектом, где все конфигурации хранятся в файлах XML. Я собираюсь начать с меньшей части этого проекта, и я буду использовать Restlet для этого. В принципе, я бы хотел создать несколько подклассов ServerResource.Spring & Restlet: 100% конфигурация XML?

Я мог бы использовать аннотации, чтобы указать, какие методы класса принимают методы HTTP, но поскольку я использую XML для всего остального, я немного неохотно. Есть ли способ сопоставить методы HTTP с методами класса для ресурсов Restlet?

Фактическая интеграция между Spring и Restlet только XML (webcontext.xml):

<bean id="apiComponent" class="org.restlet.ext.spring.SpringComponent"> 
    <property name="defaultTarget" ref="apiAppliction" /> 
    </bean> 

    <bean id="apiAppliction" class="com.company.api.ApiApplication"> 
    <property name="inboundRoot" ref="router" /> 
    </bean> 

    <!-- Define the router --> 
    <bean name="router" class="org.restlet.ext.spring.SpringBeanRouter" /> 

    <!-- Define all the routes --> 
    <bean name="/track/{trackId}" class="com.company.api.resource.TrackResource" scope="prototype" autowire="byName"> 
     <constructor-arg index="0" ref="serviceFactory"/> 
    </bean> 
    <bean name="/album" class="com.company.api.resource.AlbumResource" scope="prototype" autowire="byName"/> 
    <bean name="/album/{albumId}/tracks" class="com.company.api.resource.AlbumTracksResource" scope="prototype" autowire="byName" /> 

Есть ли способ, я могу добавить к выше методов конфигурирования и карта HTTP методов класса?

ответ

1

Фактически, нет. Вы не можете определить сопоставление методов HTTP и целевых ресурсов сервера как с самим Restlet, так и с настройкой Spring.

На самом деле, это две разные отдельные части Restlet:

  • Определение маршрутизации для обработки запросов (аутентификации, фильтры, серверные ресурсы и так далее). Это делается в классе приложения Restlet в рамках метода createInboundRoot (ваше свойство inboundRoot для вашего компонента apiAppliction).
  • Определение методов маршрутизации для HTTP. Когда выбран ресурс сервера, это делается внутренне для ресурса сервера явно (с тестами в рамках метода handleRequest) или с помощью аннотаций.

Фактически, у вас есть то же самое с Spring MVC. Вы определяете способ обнаружения контроллеров в контейнере Spring (например, автоматическое обнаружение на основе аннотации Controller), а затем вы настраиваете свои контроллеры с помощью выделенных аннотаций.

Кроме того, Roger Stocker обеспечивает усовершенствование расширения Spring на основе пространства имен XML (см. Эту ссылку http://code4you.org/2013/07/spring-custom-xml-namespace-scheme-for-the-restlet-framework/). Этот вклад в настоящее время инкубируется, чтобы быть интегрированным в официальное расширение весны.

Надеюсь, это поможет, Thierry

Смежные вопросы