2010-06-04 1 views
0

위킷 1.4에 Guice 2를 사용하고 싶습니다. Guice 1을 사용하는 "wicket-guice"패키지가 있습니다. 누군가가 Wicket을 (Maven을 사용하여) 주입 용 Guice 2를 사용하도록 구성하는 방법을 보여줄 수 있습니까?Guice 2를 개찰에 통합하는 방법은 무엇입니까?

내가 볼 수 있듯이 해결책을 찾았지만, Guice Servlets을 사용하고 Guick이있는 ServletFilter로 전체 Wicket Application을 등록하는 것이 더 나은지 궁금합니다. 그러나 이것은 wickets 객체 생성 전략과 충돌 할 것이라고 생각합니다.

답변

1

자신에게 대답하려면 나는 AtomicGamer Dev Blog의 도움으로 찾은 해결책을 게시합니다.

wicket-guice는 Guice 1 만 지원하므로 Guice는 wicket-guice 확장에서 제외되어야합니다.

<dependencies> 
     <dependency> 
       <groupId>com.google.inject</groupId> 
       <artifactId>guice</artifactId> 
       <version>2.0</version> 
     </dependency> 
     <dependency> 
       <groupId>org.apache.wicket</groupId> 
       <artifactId>wicket-guice</artifactId> 
       <version>${wicket.version}</version> 
       <exclusions> 
         <exclusion> 
           <groupId>com.google.code.guice</groupId> 
           <artifactId>guice</artifactId> 
         </exclusion> 
       </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.wicket</groupId> 
      <artifactId>wicket</artifactId> 
      <version>${wicket.version}</version> 
     </dependency> 
<dependencies> 

실제 통합은 addComponentInstantiationListener 메서드를 호출하는 init 방법에 발생합니다. 모든 개찰구로 사용하는 XML -

import com.google.inject.Guice; 
import com.google.inject.Injector; 
import org.apache.wicket.Page; 
import org.apache.wicket.protocol.http.WebApplication; 
import org.apache.wicket.guice.GuiceComponentInjector; 

public class NavigatorApplication extends WebApplication { 

    @Override 
    public Class<? extends Page> getHomePage() { 
     return Startpage.class; 
    } 

    @Override 
    protected void init() { 
     super.init(); 
       Injector injector = Guice.createInjector(new WebAppModule()); 
       addComponentInstantiationListener(
           new GuiceComponentInjector(this, injector));  
    } 

} 
1

나는 성공적으로 개찰구의 구성과 시작은 Guice의 ServletModule를 사용하여 자바 코드에서 순수하게 기록 된 솔루션을 구현했습니다.

모든 세부 사항은 필자가 작성한 블로그 게시물 here에 설명되어 있습니다.

전체 소스 (zip/svn) 및 작업 예제 Eclipse 프로젝트도 다운로드 할 수 있습니다 (링크는 게시물의 끝에 있습니다).

나는 web.xml 유지 보수에 대해 다시 한 번 잊어 버릴 수 있다고 생각한다.