【问题标题】:Can anyone recommend a Java web framework that is based on MVC and supports REST?谁能推荐一个基于MVC并支持REST的Java Web框架?
【发布时间】:2010-11-07 08:57:25
【问题描述】:

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

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

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

【问题讨论】:

  • 感谢大家的帮助

标签: java model-view-controller rest


【解决方案1】:

Spring 3 还没有完全准备好,但当前的里程碑构建 (M3) 已经足够稳定,可以真正使用。我们已经在生产应用程序中使用它的 REST 支持。它非常好,并且很好地与 Spring MVC 集成。它不符合 JAX-RS,但我不认为这是一个问题。

【讨论】:

    【解决方案2】:

    Restlets Frameworkhttp://www.restlet.org/

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

    这个模块也有 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>
    

    Framework 还有一个很棒的documentationfirst steps for newbies 和一个很棒的WIKI

    这个框架已经非常成熟并且积极改进了,看看即将到来的features

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

    希望对您有所帮助。

    【讨论】:

    • 我们也在使用 Restlets,而且效果很好。我们的视图是使用 Apache Freemarker(Restlet 有一个很好的集成)创建的,模型是一组数据传输对象。
    • 每个人都有自己的想法,我发现 Restlets 是一个非常令人讨厌的框架,与它必须与之一起工作的现有框架不能很好地配合。
    【解决方案3】:

    对于网络服务,Jersey 既简单又好用。 Spring 3 听起来会很好,但它还没有推出,Jersey 功能齐全,并且开箱即用地支持 SOAP 和 JSON。除了将 servlet 添加到 web.xml 文件之外,所有这些都是基于注释的,这可能比 Spring 插件更容易配置,但为了避免被骂,我会说也许不会。

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

    【讨论】:

    • Jersey 只是 JSR-311 的一个实现,也是 restlet 和 resteasy
    • 为了完整起见,JSR-311基于REST,通过implicits支持MVC
    • 显然这是一个一半的答案。
    【解决方案4】:

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

    为什么春天好?

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

    总而言之,我只是有过积极的经历,因为 Spring 确实提倡最佳实践。

    【讨论】:

      【解决方案5】:

      我是单轨 MVC 用户 (castleproject.org),所以我想我们来自相似的背景。 几个月前,我们开始在另一个项目中研究 Java 堆栈,尤其是 Spring。

      在功能方面,它得到了我在单轨中使用的 90%,但是它更加灵活,缺点是需要适应很多配置。 文档有时过于广泛,因此您不知道在哪里可以找到某些东西。 希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-21
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多