任何人都可以推荐基于MVC的Java Web框架并支持REST吗?

时间:2009-07-01 15:22:19

标签: java model-view-controller rest

我们希望在Web应用程序中托管Java域模型(使用DDD编写)。理想情况下,我想支持RESTful资源和请求,只需一个站点来支持用户和REST API。

理想情况下,相同的URL可用于最终用户和给定功能的RESTful API(使用HTTP内容类型/协商来指定差异)。

我在Ruby on Rails和Asp.mvc中做过类似的应用程序,但没有经验在Java中做过这样的事情。任何人都有从哪里开始的经验或建议? (谷歌搜索表明Spring v3可能是一个答案,任何人对Spring 3都有任何想法吗?)

5 个答案:

答案 0 :(得分:4)

Restlets Framework http://www.restlet.org/

我已经广泛使用了这个框架,易于使用,非常灵活,并且支持大量功能以及您希望从文件上传到gzipping响应的更多功能。

这个模块也有Spring支持,非常简单。例如:

<强>的web.xml

    <servlet>
        <servlet-name>webapi</servlet-name>
        <servlet-class>
            com.noelios.restlet.ext.spring.RestletFrameworkServlet
        </servlet-class>
    </servlet>

春季背景

    <bean id="root" class="org.restlet.ext.spring.SpringRouter">
        <property name="attachments">
            <map>    
                 <entry key="/{variable}/your/restful/call/{variable2}">
                    <bean class="org.restlet.ext.spring.SpringFinder">
                        <lookup-method name="createResource" bean="yourBean" />
                    </bean>
                </entry>
            </map>
    </bean>

框架也有一个很棒的documentationfirst steps for newbies和一个很棒的WIKI

这个框架非常成熟并且得到了积极的改进,检查了即将到来的features

使用jmock对Restlet资源端点进行单元测试也很容易。

希望有所帮助。

答案 1 :(得分:4)

Spring 3尚未准备就绪,但目前的里程碑版本(M3)足够稳定,可用于真实版本。我们已经在生产应用程序中使用其REST支持。它非常好,并且与Spring MVC很好地集成。它不符合JAX-RS,但我不认为这是一个问题。

答案 2 :(得分:3)

对于网络服务,Jersey很简单。 Spring 3听起来很不错,但它还没有出来,而且Jersey功能齐全,支持开箱即用的SOAP和JSON。除了将servlet添加到web.xml文件之外,它都是基于注释的,这使得它甚至比Spring插件更容易配置,但为了避免被大吼大叫,我会说也许不是。

对于(MVC)网页(用户UI),我使用Spring MVC或Struts。

答案 3 :(得分:2)

春天很棒。我已将它用于某些项目,最近还与Liferay门户服务器一起用于开发portlet

为什么春天好?

  • 这是一个非侵入性框架:这意味着您的应用程序代码不依赖于框架(使用IoC - 控制反转 - 概念)。 Spring确实是一个好的框架应该做的事情:支持开发而不是创建更多的依赖。
  • 依赖注入:Spring使用依赖注入概念,这对于避免依赖于代码非常有用。您将在spring xml配置文件中定义依赖项,您可以在其中定义bean和bean之间的连接/关系。这极大地方便了重用,降低了对象之间的强耦合,从而提高了代码的可维护性。
  • 它不仅仅是一个Web框架:Spring MVC提供了许多适用于不同环境的不同控制器。但它不仅仅是一个Web框架,而且它支持所有不同层(表示,服务和数据访问层)的开发。例如,在数据访问层,它很好地与像Hibernate这样的ORM映射器集成,并且它使用面向方面的方法来提供事务管理。
  • 下耦合 - &gt;提高可测试性:通过避免强耦合,代码的可测试性将会提高。你可以很好地注入模拟对象来测试不同的层。

总而言之,我只是积极的经历,因为Spring真的推广了最佳实践。

答案 4 :(得分:1)

我是单轨MVC用户(castleproject.org),所以我想我们来自类似的背景。 几个月前,我们开始在不同的项目中处理java堆栈,特别是Spring。

功能方面它拥有我在单轨中所用的90%,但它更灵活,其缺点是有很多配置需要习惯。 文档有时太多,所以你不知道在哪里找到东西。 希望它有所帮助