How can i use Guice in JavaFX controllers?

后端 未结 4 1298
眼角桃花
眼角桃花 2021-01-02 20:45

I have a JavaFX application where I would like to introduce Guice because my Code is full of factorys right now, only for the purpose of testing.

I have one use case

4条回答
  •  余生分开走
    2021-01-02 20:56

    I don't use Guice, but the simplest approach would appear to be just to use a controller factory on the FXMLLoader. You can create a controller factory that instructs the FXMLLoader to use Guice to initialize your controllers:

    final Injector injector = Guice.createInjector(...);
    FXMLLoader loader = new FXMLLoader(getClass().getResource(...));
    loader.setControllerFactory(new Callback, Object>() {
       @Override
       public Object call(Class type) {
           return injector.getInstance(type);
       }
    });
    // In Java 8, replace the above with 
    // loader.setControllerFactory(injector::getInstance);
    Parent root = loader.load();
    

提交回复
热议问题