问题标签 [guice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 注入后初始化(JSF 1.2 + Guice)
我正在尝试将 Guice 集成到 JSF 1.2 (Sun RI) 应用程序中,并且我希望能够对我的托管 bean 执行以下操作:
@Inject
使用 Guice注解注入依赖项,然后@PostConstruct
使用注解执行初始化
我的问题是在处理注释@PostConstruct
之前总是调用该方法。@Inject
有谁知道这个问题的解决方案?
托管bean:
托管 bean 声明:
Guice 绑定:
我尝试了以下方法:
- 手动调用
Injector.injectMembers(Object)
(@PostConstruct
不在超类中处理) - 使用自定义
VariableResolver
(之前@PostConstruct
处理过@Inject
) - 使用 MyFaces'
GuiceResolver
(只是似乎根本不起作用 - 也许与这个问题有关)
如果这似乎是处理事情的错误方式,我很乐意考虑其他选择......感谢任何帮助。
编辑
我使用的是 Guice 1.0。我现在已经升级到 Guice 2.0,但问题仍然存在。我发现了一些似乎与我的问题有关的讨论......但我不明白如何使用这些信息:(
maven-2 - 在哪个 maven2 存储库中可以找到 Google Guice?
据我了解,Google Guice 2.0 不久前发布。但我看到中央回购仍然有过时的1.0版本。请告诉我在哪里可以找到带有 Google Guice 2.0 的 maven2 存储库。
java - 有人用过 ServiceLoader 和 Guice 吗?
我一直想用我们的应用程序 + 构建系统在更大范围内尝试这个,但更高的优先级一直把它推到次要位置。这似乎是加载 Guice 模块的好方法,并且避免了关于“硬编码配置”的常见抱怨。单个配置属性很少自行更改,但您几乎总是有一组配置文件,通常用于不同的环境(调试、生产等)。
ServiceLoader 允许您提取定义为给定类型的服务的所有实现的列表。把它和 Guice 放在一起,你最终得到:
使用示例(作为 guice-servlet 项目中的动态 servlet 加载器):
服务(打包为模块)将打包在单独的 jar 文件中。在每一个中,您将在元数据中定义类:
由于我们使用 Maven,我们认为这将是理想的,因为我们可以在运行时通过配置文件依赖项引入不同的实现。有人像这样使用Guice吗?
如果没有,请随意使用这个例子,看看它是如何为你工作的。(ServiceLoader 仅在 JDK6+ 中支持)
transactions - 迁移应用程序以使用 Guice - 如何将事务注入现有对象?
我是 Guice 的新手,我正在将它用于具有大量遗留代码的应用程序。它有几个类,如下所示:
很清楚如何使用 Guice 来绑定永不改变的实例,但是改变的实例(即事务)呢?有没有办法让我在更改时使用 Guice 注入不同的 Transaction 实例? 请注意,事务实例不是受良好支持的 JPA/Hibernate/Spring 事务之一
我能想到的侵入性最小的方法(避免一次迁移每个使用事务的类)将仅在实例化对象时使用 Guice 注入事务,并且我会保留在必要时更新事务的现有应用程序代码. 例如,此 Provider 可用于使用当前 Transaction 实例注入新对象:
应用程序逻辑看起来像这样:
是否有其他方法可以更新现有类使用的 Transaction 实例,而无需一次迁移每个类?
spring - 管理具有大量 bean 的依赖注入应用程序的复杂性
我正在开发一个 Spring 应用程序,它有大量的 bean - 数百个 - 使用和记录变得非常麻烦。
我对您使用具有大量 bean 的支持 DI 的应用程序的任何经验感兴趣,这将有助于可维护性、文档和一般使用。
尽管该应用程序是基于 Spring 的,带有几个上下文文件,但我愿意听取有关任何 DI 容器以及一般 DI 的建议。
java - 如何使用 Google Guice 创建需要参数的对象?
也许我只是瞎了眼,但我没有看到如何使用Guice(刚开始)来替换new
此方法中的调用:
对于测试,处理器可能有不同的实现,所以我想避免new
调用,并在此过程中摆脱对实现的依赖。
如果我的班级只记得处理器的一个实例,我可以通过构造函数注入它,但由于处理器被设计为不可变的,我每次都需要一个新的。
我将如何使用 Guice (2.0) 实现这一目标?
aop - 什么是aopalliance?为什么 guice 使用它?
我正在使用来自aopalliance的 aop 进行依赖注入。我不太清楚 aopalliance 到底是什么以及谁实现了他们的 sourceforge 页面上的版本(从 2004 年开始)。为什么 guice 使用这个版本而不是更知名的包,例如 AspectJ?
另外,你知道关于 aopalliance 版本的任何教程吗?
谢谢
java - 使用 Guice 进行依赖注入:任何教程都没有涵盖的内容
我刚刚对依赖注入的Google Guice进行了修改,并开始将其集成到我现有的应用程序中。到目前为止,一切都很好。除了它们的依赖项之外,我有许多类需要字符串、数据源等。我知道有 NamedBindings,但我真的不想为每个必须传递给每个类的构造函数的简单字符串创建注释。然后,有一个叫做 AssistedInject 的东西,为我创建了 Factory 实现。哇,但我还是要定义工厂的接口。对于确实有依赖关系的类来说没关系,但是这个示例类呢:
在某些情况下,我怀疑如何以正确的方式使用 Guice,或者更一般地说,DI。“我经常听到:XYZ 框架是新的。” 但这暗示我必须使用 DI 框架创建每个实例。
只需要一个实例
如果我只需要这个类的一个实例怎么办?这个类除了两个字符串之外绝对没有依赖关系。考虑一个 Shutdown Hook,它只会被实例化一次并作为我的 Shutdown Hook 传递给 JVM。我应该用 Guice 创建这个实例吗?这对我来说看起来很愚蠢,因为没有什么可以注入的,但是我必须编写一个工厂接口来传递 Guide 两个参数,并且必须为我的 FooBarClass 创建一个接口来使用 DI。
需要多个实例
同样的事情也适用于我需要这个类的多个实例的情况。没有依赖关系,但我必须创建一堆样板代码才能从中得到任何东西。这对我来说似乎是错误的。
那么,我应该如何使用 DI 和/或 Guice?
非常感谢!
java - Guice 配置错误
我正在尝试将 Google Guice 与 @Inject 和 @Singleton 属性一起使用,如下所示:
我有:
- 具有空
configure()
方法的模块。 - 一个接口 IFoo
- 类 Foo(实现 IFoo),使用 @Singleton 注释,带有使用 @Inject 注释的无参数构造函数。这是单个带注释的构造函数。
类、构造函数和接口是公共的,但我仍然收到以下错误:
没有绑定 IFoo 的实现。
spring - Guice 自定义范围和 Spring 托管 bean
(x-发布到 guice 邮件列表)
我正在一个将存在于现有应用程序中的新库上试用 Guice。我们现在所有的应用程序都是 Spring 应用程序,我们有一些与 Spring 相关的通用代码,主要与我们倾向于使用的线程模型有关。它基本上给了我们(可以被视为)一个逻辑线索。
所以我们可以向它抛出作业,它确保具有给定键的作业总是按照提交的顺序在同一个管道上结束。通常这是应用程序生命周期中的单个线程,但如果发生坏事,那么工作线程(支持管道)将被丢弃,管道停用,创建新的工作人员并在该工作人员上重新激活管道。这里的所有接线都由弹簧提供。
我的新库需要将其用于线程模型,并且我计划将 guice 用于事物的逻辑和域方面,即构建管道上的工作以及它所代表的逻辑。这对我来说似乎很简单,除了一件看起来很粗糙的事情,即我想用“管道”(又名逻辑线程)范围注入某些东西。我已经阅读了自定义范围(和 SimpleScope 实现)维基页面,但有些事情对我来说并不清楚,非常感谢澄清......
- 管道在 JVM 的生命周期中存活,因此似乎我需要进入一个范围但从不退出,这有什么缺点吗?
- 在 Spring 托管 bean 中触发范围条目有哪些选项?它只是创建spring上下文然后使用SpringIntegration将spring bean吸入guice上下文的情况吗?
- 这听起来真的很不稳定,我应该用一个由我的管道 ID 键入的单例来包装它吗?
干杯马特