gpt4 book ai didi

java - 在非 guice 类中注入(inject) guice 管理的依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:46 26 4
gpt4 key购买 nike

我有一个类 (CustomConnectionProvider),它将由第三方库 (hibernate) 使用 class.forName().newInstance() 实例化。我需要注入(inject)一个 guice 管理的依赖项,比如 MyDatabaseFactory,它将为 Multi-Tenancy 提供数据源。

我不能直接@Inject MyDatabaseFactory,因为CustomConnectionProvider 不是托管bean。而且我无法控制它的创建方式。

我刚开始将 Guice 作为 Play 应用程序的一部分。任何示例或想法将不胜感激,我正在寻找像 ServiceLocator 这样的解决方案。

针对特定情况修复幸运的是,Play.application() 提供了一个静态方法来获取 injector,我正在使用它来获取我的工厂实例。我仍然想知道是否必须在不玩的情况下修复它。

Play 2.5 更新Play.application() 在 2.5 中被弃用。我们需要按照罗伯特的建议使用静态注入(inject)。

最佳答案

您可以使用静态注入(inject)。参见 https://github.com/google/guice/wiki/Injections

It makes it possible for objects to partially participate in dependency injection, by gaining access to injected types without being injected themselves. Use

requestStaticInjection() 

在模块中指定要在注入(inject)器创建时注入(inject)的类:

@Override public void configure() { 
requestStaticInjection(ProcessorFactory.class); ... }

Guice 将注入(inject)具有@Inject 注释的类的静态成员。

关于java - 在非 guice 类中注入(inject) guice 管理的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35335689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com