2012-10-26 6 views
2

SpringMVC (3.0.1) 스택을 기반으로 구축 된 기존 GUI 웹 애플리케이션의 경우 RESTful API를 공개하려고한다. 합리적인 선택을 무엇이라고 생각하십니까?SpringMVC 애플리케이션 용 RESTful API

  1. 저지와 같은 다른 프레임 워크와 통합됩니다 (처음부터 다시 시작하는 것처럼 보입니다)?
  2. JAXB/Jackson의 SpringMVC 통합을 사용합니까?
  3. DispatchServlet에 다른 서블릿 매핑 /api/*을 추가해야합니까?
  4. 모든보기는 jsp로 코딩됩니다. 내 XML API에 jsp 템플릿을 사용해야합니까?
  5. 일반적인 의존성을 가진 별도의 새로운 webapp을 빌드 하시겠습니까?
  6. 다른 건 없나요?

    <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> 
    

    그리고 내 스프링 컨텍스트 설명 :

이하 내 web.xml 파일입니다 사전에

<?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> 

감사합니다; 매핑 예 환영 :-)에게 있습니다

답변

3

나는 당신의 질문의 몇 가지에 자상을 것입니다 ...

통합/분리 : 나는 당신이 당신의 REST 응용 프로그램이 귀하의 웹 GUI에서 분리 구축 추천 할 것입니다. 사람들이 API를 빌드하는 큰 이유는 여러 애플리케이션에이 API를 노출 시켜서 WEB GUI를 API와 긴밀히 연결하지 않기 때문입니다. 이 생각은 우려 개념의 전체 분리와 일치합니다. 예를 들어 나중에 동일한 API에 액세스하기 위해 모바일 앱을 빌드하면 배포를 위해 웹 GUI를 중단해야하는 경우 영향을받지 않습니다.

Jackson/JAXB : 저는 Jackson을 강력히 추천합니다. 필자의 의견으로는 성능과 기능이 가장 잘 결합되어 있다는 것입니다.

스프링 MVC/뉴저지 : 이미 고수 아무 문제가 없다 당신이 봄에 익숙하다면,

1) 적은 학습 곡선의 : 나는 몇 가지 이유로 봄을 고수에게 추천 할 것입니다 그것.

2.) 저지에서의 의존성 주입은 오늘날 다소 부숴졌습니다 (http://java.net/jira/browse/JERSEY-517). 그래서 제가 봄처럼 잘 작동하는 데 익숙하다면, 저지로 전환하는 것은 고통 스러울 것입니다. 이것은 2.0 릴리스에서 다루어지기로되어 있지만 아직 완성되지 않았습니다.

1

몇 가지 요인에 따라 다릅니다. 내가 물어볼 첫 번째 질문은 성능에 관한 것입니다. webapp이 하나만있는 경우 GUI 사용자 또는 WS 사용자가 서버에 과부하가 걸릴 수 있습니다. 그래서, 아마도 더 나은 해결책은 3 가지 인공물을 갖는 것입니다.

GUI 웹 애플리케이션 WS 웹 애플리케이션 비즈니스 공통 아티팩트

그리고 당신은 당신의 필요에 따라 각 웹 애플리케이션을 확대 할 수 있습니다.

희망이 있습니다.