Spring & Restlet:100% XML 配置?

Spring & Restlet : 100% XML configuration?

我正在开发一个项目,所有配置都保存在 XML 文件中。我即将开始这个项目的一小部分,为此我将使用 Restlet。基本上,我想做的是创建 ServerResource.

的几个子 classes

我可以使用注释来指定哪些 class 方法接受哪些 HTTP 方法,但由于我对其他所有内容都使用 XML,所以我有点不情愿。有没有办法将 HTTP 方法映射到 Restlet 资源的 class 方法?

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 方法映射到 class 方法?

事实上,没有。您不能使用 Restlet 本身和 Spring 配置定义 HTTP 方法和目标服务器资源方法之间的映射。

事实上,这是 Restlet 的两个不同的部分:

  • 定义处理请求的路由(身份验证、过滤器、服务器资源等)。这是在方法 createInboundRoot 中的 Restlet 应用程序 class 中完成的(您的 属性 inboundRoot 用于您的 bean apiAppliction)。
  • HTTP 方法循环的定义。一旦选择了要使用的服务器资源,就会在服务器资源内部明确地完成(在方法 handleRequest 中进行测试)或使用注释。

事实上,你和Spring MVC有同样的事情。您定义检测 Spring 容器中控制器的方式(例如基于注释 Controller 的自动检测),然后使用专用注释配置您的控制器。

此外,Roger Stocker 提供了基于 XML 命名空间的 Spring 扩展的改进(参见此 link http://code4you.org/2013/07/spring-custom-xml-namespace-scheme-for-the-restlet-framework/)。此贡献目前正在孵化中,以集成到官方 Spring 扩展中。

希望对您有所帮助, 蒂埃里