Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证GUI模块配置-如何使用SPI?_Java_Validation_Dependency Injection_Guice - Fatal编程技术网

Java 验证GUI模块配置-如何使用SPI?

Java 验证GUI模块配置-如何使用SPI?,java,validation,dependency-injection,guice,Java,Validation,Dependency Injection,Guice,我正在编写一个使用Guice引导服务器的框架,因此我扩展了Guice的AbstractModule来创建一个Module,它为用户配置代码提供了一些方便的方法。但是,我想在启动代码之前检查配置是否正常。所以它必须在这里的某个地方: // here, before the injector is created? Injector injector = Guice.createInjector(someModule); // here, after configure

我正在编写一个使用Guice引导服务器的框架,因此我扩展了Guice的
AbstractModule
来创建一个
Module
,它为用户配置代码提供了一些方便的方法。但是,我想在启动代码之前检查配置是否正常。所以它必须在这里的某个地方:

// here, before the injector is created?
Injector injector = Guice.createInjector(someModule);               
// here, after configure() is called?
Object something = injector.getInstance(SomeServer.class);
// start the server

在创建喷油器之前,我似乎没有什么可以检查的,因为模块还没有
configure()
ed。有人提到使用guicespi来验证模块配置,但文档不太清楚。使用Guice的人能否简要介绍一下在使用喷油器之前验证模块的最佳做法?

我没有多少亲身体验,但在我看来,您有三种选择:

  • 如果方便的方法表达能力强,能够提供有用的信息,而无需运行
    configure()
    ,则重构为
    myconvencemethodmodule.myConfigure()
    myconvencemethodmodule.validate()
    。理论上,你可以用mock调用Module.configure(Binder),但是用Guice的EDSL太复杂了;改为使用
    ElementVisitor
    (以下)

  • 调用特定的
    模块
    ,检查绑定状态。因为元素可能有多种类型,所以您可能希望创建一个(可能通过创建的子类来将您与将来要创建的元素隔离)。通过这种方式,您可以很好地查看所有绑定,甚至是Guice的EDSL中的绑定,同时仍然在模块的上下文中我想这是你最好的选择。

  • 像往常一样创建喷油器,并致电调查。如果配置的合理性取决于多个模块的交互方式,而不是单个模块的结构,那么这可能是您的最佳选择。如果您只在这一点上检查,您将无法真正区分一个模块和另一个模块


我还没有亲身体验过,但在我看来,你有三个选择:

  • 如果方便的方法表达能力强,能够提供有用的信息,而无需运行
    configure()
    ,则重构为
    myconvencemethodmodule.myConfigure()
    myconvencemethodmodule.validate()
    。理论上,你可以用mock调用Module.configure(Binder),但是用Guice的EDSL太复杂了;改为使用
    ElementVisitor
    (以下)

  • 调用特定的
    模块
    ,检查绑定状态。因为元素可能有多种类型,所以您可能希望创建一个(可能通过创建的子类来将您与将来要创建的元素隔离)。通过这种方式,您可以很好地查看所有绑定,甚至是Guice的EDSL中的绑定,同时仍然在模块的上下文中我想这是你最好的选择。

  • 像往常一样创建喷油器,并致电调查。如果配置的合理性取决于多个模块的交互方式,而不是单个模块的结构,那么这可能是您的最佳选择。如果您只在这一点上检查,您将无法真正区分一个模块和另一个模块