2010-06-04 4 views
0

Я хочу использовать Guice 2 с Wicket 1.4. Существует пакет «калитки-guice», в котором используется Guice 1. Может ли кто-нибудь дать мне пример, как настроить Wicket для использования Guice 2 для инъекций (с Maven).Как интегрировать Guice 2 в Wicket?

Как вы можете видеть удар, я нашел решение, но мне интересно, было бы лучше использовать Guice Servlets и зарегистрировать все приложение Wicket как ServletFilter с Guice. Но я думаю, что это противоречило бы стратегии создания калитки.

ответ

1

Чтобы ответить сам, отправлю решение, которое я нашел с помощью AtomicGamer Dev Blog.

Поскольку wicket-guice поддерживает только Guice 1, 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> 

Фактические интеграции происходит в init метод, который вызывает метод addComponentInstantiationListener.

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

Я успешно реализовал решение, в котором конфигурация калитки и запуск написаны исключительно в Java-коде с помощью ServletModule Guice в - не XML, используемый для калитки вообще.

Все подробности описаны here в сообщении в блоге, которое я написал.

Полный исходный код (zip/svn) и рабочий пример проекта eclipse доступны для скачивания (ссылки находятся в конце сообщения).

Я думаю, вам понравится еще раз забыли про обслуживание web.xml :)

Смежные вопросы