Spring & Restlet: 100% конфигурация XML?

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

Я мог бы использовать аннотации, чтобы указать, какие методы класса принимают какие методы 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 с методами класса?


person sbrattla    schedule 02.02.2015    source источник


Ответы (1)


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

По сути, это две разные части Restlet:

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

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

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

Надеюсь, это поможет, Тьерри

person Thierry Templier    schedule 03.02.2015