2011-09-05 6 views
2

나는 Hibernate/Spring과 Spring MVC를 사용하는 응용 프로그램을 가지고 있지만 배우고 또한 응용 프로그램을 Hibernate/Guice/Wicket.Hibernate/Spring/Spring MVC 스택을 Hibernate/Guice/Wicket으로 바꾼다.

나는 기본적인 질문을하지만, 어디에서 시작해야합니까? 스프링 레이어, 스프링 MVC 레이어를 교체해야할까요?

두 컨트롤러가 같은 환경에서 작동하므로 하나의 컨트롤러 /보기 만 편집 한 다음 확장 할 수 있습니까? 어떻게 수행합니까?

+2

확실하지 않음 Guice .. – Tim

답변

3
  1. 시작 :

    스프링 MVC 어쨌든 봄없이 작동하지 않습니다. 그리고 다른 레이어는 API에 의존하지 않으므로 (적어도, 없어야 함) 프리젠 테이션 레이어가 가장 쉽게 변경되어야합니다 (대부분의 노력을 기울일 것입니다. 재 구현).

  2. 이동 봄 이후
  3. :

    a) 귀하가 Guice로 마이그레이션, * DaoSupport 등) 또는 인프라 (트랜잭션 관리, 보안) * 템플릿 (봄의 유틸리티 클래스의 대부분을 사용하지 않는 경우는 아마 것 Guice 모듈/주석에서 다시 작성 (XML 또는 주석 기반) 구성의 문제 일 수 있습니다. 순수 종속성 삽입이 이식 가능하지 않은 경우 프레임 워크간에 거의 직접 매핑되기 때문입니다.

    b) Spring의 유틸리티 클래스와 인프라를 사용하는 경우 (이것은 아마도 부가 가치가없는 또 다른 의존성 주입 컨테이너 대신 Spring을 사용하는 전체 지점이므로 ...) 어떻게 든 Guice로 마이그레이션해야합니다.이 점진적으로 수행 할 계획이라면 두 가지 (아마도 Guice의 Spring 인프라를 사용하는) 간의 통합을 찾을 수 있습니다. 그리고 depedencies를 마이그레이션 한 후 Guice-native 인터셉터 구현으로 전환합니다 (테스트, 테스트, 테스트 행동 상 약간의 차이 만 있어도 응용 프로그램이 손상 될 수 있기 때문입니다. This other question에서 이에 대한 몇 가지 도움말을 제공 할 수 있습니다. 그런 다음

  4. , 최대 절전 모드 :

    당신이 최대 절전 모드를 유지 할 것이기 때문에이 그 구성이 변화에 의해 영향을받지 않습니다. 인프라와 구성을 Guice로 마이그레이션 할 때 부트 스트랩 만 변경됩니다. 두 개의 병렬 SessionFactory를 유지하는 것을 권장하지 않는다. 스프링 MVC는 봄없이 작동하지만 그 스위치 봄 이후에 나는 모두 봄의 추상화를 알고 Guice는 개찰구에서 동일합니다 .. 그래서 개찰구와 스프링 MVC를 교체 시작 것이고, 경우

0

하나의 프레임 워크에서 다른 프레임 워크로의 점진적인 전환은 개발 단계에서는 가능하지만 생산 단계에서는 불가능합니다. 단일 환경에서 페이지를 교체하여 페이지를 처리해야하는 문제.

  1. URL 매핑

    springMVC + 봄 +의 부트 스트랩 최대 절전 모드 및 개찰 + guice + 최대 절전 모드가 URL 패턴을 사용하여 수행됩니다. springmvc 또는 개찰이 요청을 처리 할 것인지 여부를 서버에 알려야합니다.

    루트 패턴을 사용하여 컨텍스트를 완전히 구분해야합니다. 따라서 마이그레이션 단계에서 URL을 조정하기가 어려울 수 있습니다. 봄 버전은 urls 버전 wicket을 참조 할 수 없습니다.

  2. 데이터 동기화

    두 동면 매핑 병렬로 동작한다. 캐시를 사용하지 않고 각 페이지 요청에 대한 모든 정보를 다시로드하여 데이터 동기화에 문제가 발생하지 않도록하십시오.

이 솔루션의 단점은 이중로드 최대 절전 매핑으로 인해 서버가 시작되는 시간입니다. 당신은 당신의 web.xml에 개찰 - guice 응용 프로그램을 추가하여 시작해야

: 볼 수있는

<filter> 
    <filter-name>guiceFilter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>guiceFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<listener> 
    <listener-class>com.app.web.guice.MyGuiceServletContextListener</listener-class> 
</listener> 
관련 문제