我的核心应用程序完成了。我能够成功地加载模块,但我仍然不能正确地使用guice在我的模块中注入依赖项。我的核心应用程序使用service loader生成模块,并使用Guice的AbstractModule的install方法安装它们。下面是一个示例代码:(简化)
@Override
protected void configure() {
ServiceLoader<IModule> modules = ServiceLoader.load(IModule, ucl);
for (IModule module : modules) {
install(module);
}
}
每个模块都实现了IModule接口,扩展了Guice的module接口。让我困惑的是,当不建议到处都有注入器时,我如何提供插入实例(例如view的实例)。我读过关于@Provides注释的文章,我认为这是一个可能的解决方案,但我面临的另一个问题是,它们中的一些有依赖关系,需要注入。例如,我的pluginview注入了一个plug in Controller的实例。在这种情况下,我不确定如何使用provider接口。建议将得到真正的赞赏
public PlugIn implements IModule{
@Override
public void configure(Binder binder){
binder.bind(View.class).to(PlugInView.class);
}
public View getView(){
//Should return a view instance
//Still unsure how to provide this
}
}
public PlugInView extends View{
@Inject
private PlugInView(PlugInController controller){
//Do stuff with controller
}
}
我终于知道为什么我的方法行不通了。仔细阅读之后,似乎要让guice注入依赖项,guice必须是实例化类的人。在我的方法中,我有一个迭代器,它懒洋洋地实例化服务加载器加载的模块。为了解决这个问题,我已经停止了从核心应用程序安装模块。
@Override
protected void configure() {
ServiceLoader<IModule> modules = ServiceLoader.load(IModule, ucl);
bind()...//Configure core app bindings
//Removed this part
for (IModule module : modules) {
install(module);
}
//Until here
}
并让每个插件创建它们自己的注入器,以便调用它们自己的配置方法。这种方法似乎为每个模块提供了独立的注入器,在我看来这是可以接受的,因为我希望每个模块都是独立的。我还喜欢这种方法允许我的插件不再实现模块接口或扩展AbstractModule,从而使它们可以自由选择是否使用guice。
我有一个单例类定义为: 我有另一个类使用这个单例类,但这个类必须使用新操作符创建。因此,我不能使用构造函数注入或setter注入等。 我当然可以将此实例传递到MyClass的构造函数中,但从我的程序上下文来看,这不是一个很好的设计。 另一个解决方案是为MySingletonClass创建一个静态getInstance方法,这样我就可以从程序中的任何地方获取实例。但我想知道Guice是否支持类似的东
问题内容: 我正在阅读Guice文档,并且遇到了一个标题为“ 消除周期”(推荐)的部分,这引起了我的极大兴趣,因为正是这个问题才导致我今天使用该文档。 基本上,要消除循环依赖性,您可以“将依赖性案例提取到单独的类中”。 好的,那里没有新内容。 因此,在示例中,我们有。 您有一个和一个,每个都需要引用的一个实例。这个概念没有问题,并且可以通过经典的依赖注入轻松实现: 这很容易,但是现在,我需要通过G
我试图了解DI在我们的代码库(Kotlin)中是如何使用的。我们正在使用googleguice进行依赖注入。 下面是一个示例类: 在模块类中: DepB类别: 据我所知,对于用< code>@Inject注释的变量,Google Guice会使用模块类来解决这些依赖关系。所以< code>DepA对象的注入方式是有意义的。 但是呢?我们如何能够在不指定任何位置的情况下注入DepB?
我正在使用Guice来连接Jetty服务器,我想用Apache Shiro添加一些安全性。 似乎Shiro需要一个ServletContext来配置,但问题是我没有;在配置时没有ServletContext(例如在ServletModule中作为留档状态)。ServletContext在GuiceServletContextListener中可用,但此时,我的注入器已经创建,因此安装Shiro模块
这是我的归属感。Yaml 为了检查,我使用curl如下所示: 我希望响应包含access-control-allow-*
本文向大家介绍如何在不使用HTML的情况下创建网站?,包括了如何在不使用HTML的情况下创建网站?的使用技巧和注意事项,需要的朋友参考一下 如果您不了解HTML或CSS,并且想创建一个网站,那么不用担心,您可以轻松创建网站,而无需编写一行HTML代码。 以下是一些无需编写任何HTML或代码行即可构建网站的方法: 网站构造函数 当您购买网站托管计划时,托管公司将为您提供免费的网站构建器选项,以轻松创