对于基于SpringMVC(3.0.1)堆栈构建的现有GUI webapp,我想公开RESTful API。您认为合理的选择是什么?
/api/*
添加到同一个DispatchServlet
吗? 此后是我的web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<welcome-file-list>
<welcome-file>home.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
</web-app>
我的春天上下文描述符:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:security="http://www.springframework.org/schema/security" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<context:component-scan base-package="net.mycrub.poc.controllers" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/views/"
p:suffix=".jsp"
p:viewClass="org.springframework.web.servlet.view.JstlView" />
</beans>
提前致谢;欢迎使用映射示例: - )
答案 0 :(得分:3)
我会抓住你的一些问题......
集成/分离:我建议您将IDE应用程序与WEB GUI分开构建。人们构建API的一个重要原因是将其暴露给多个应用程序,因此我不会将WEB GUI与API紧密联系在一起。这种思想符合整个关注点分离的概念。例如,如果您稍后构建移动应用程序以访问相同的API,则在您需要关闭WEB GUI进行部署时,它不会受到影响。
杰克逊/ JAXB :我强烈推荐杰克逊。在我看来,它具有最佳的性能和功能组合。
Spring MVC / Jersey :我建议坚持使用Spring有几个原因:
1。)学习曲线较少,如果你对Spring已经熟悉,坚持下去就没有错。
2。)今天泽西岛的依赖注入或多或少地被打破了(http://java.net/jira/browse/JERSEY-517)。因此,如果你习惯于像春天一样在Spring工作,那么切换到Jersey会很痛苦。这应该在2.0版本中得到解决,但尚未最终确定。
答案 1 :(得分:1)
这取决于几个因素。我要问的第一个问题是性能问题。如果您只有一个Web应用程序,则GUI用户或WS用户可能会使服务器过载。因此,可能更好的解决方案是拥有3种不同的工件。
GUI WebApp WS WebApp 商业普通神器
您可以根据需要升级每个网络应用程序。
希望它有所帮助。
答案 2 :(得分:1)
这个问题已经有好几年了,无论如何,今天一种合理的方法是将Spring webapp迁移到包括Spring Data REST模块的Spring Boot。所有JPA存储库都将自动导出为全面且可发现的REST API。