Guice:根据谁获得它来注入不同的实现?

2023-11-30

我有两个第三方类,它们都实现了Authorizer界面。我需要为每个注入不同的实现。

如果我做一个@Provides,我怎样才能实现它,以便它提供运行时所需的实现?提供者不知道是谁要求注射。

理论上我可以使用@Named,但我无法修改正在注入的代码。我想做类似的事情:

bind(Authorizer.class).to(ImplA.class).for(SomeClass.class)
bind(Authorizer.class).to(ImplB.class).for(SomeOtherClass.class)

显然,“for”代码不存在,但是是否有一些等效的方法可以做到这一点?


您可以使用以下方法实现此目的私有模块,它允许您安装(相互不可访问的)冲突的绑定,以用于构造一组有限的非冲突的绑定exposed绑定。这通常被视为解决问题的方法机器人腿问题,其中您想要(例如)公开一个@Left Leg and a @Right Leg哪里的Leg对象完全相同,但绑定不同Foot实现(LeftFoot and RightFoot)在层次结构中进一步向下。

此时,您没有指定“谁正在获取它”,但是您为一个消费者与另一个消费者暴露了略有不同的注入器图。

install(new PrivateModule() {
  bind(Authorizer.class).to(ImplA.class);
  expose(SomeClass.class);
});
install(new PrivateModule() {
  bind(Authorizer.class).to(ImplB.class);
  expose(SomeOtherClass.class);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Guice:根据谁获得它来注入不同的实现? 的相关文章

  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • 清理码头 - 删除“不必要”的东西

    我习惯用Jetty http jetty codehaus org jetty 作为我的网络容器 我对我做了什么安装步骤得到原始的焦油球并且清理一些目录和文件从中 我在这里想提出的是 您通常从 Jetty 中删除什么以在生产 登台环境中使用
  • Java Try Catch Final 没有 Catch 的情况下会阻塞

    我正在审查一些新代码 该程序只有一个 try 和一个 finally 块 既然排除了 catch 块 那么如果 try 块遇到异常或任何可抛出的内容 它如何工作 它直接进入finally块吗 如果 try 块中的任何代码可以引发已检查异常
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 无法解析类型为 xxx 的任何 bean;限定符:[@javax.enterprise.inject.Any()]

    我有一个 LoginProvider 接口 public interface LoginProvider boolean login String username String password 以及两种不同的实现 public clas
  • Grails 2.3.0 自动重新加载不起作用

    我最近将我们的项目升级到 grails 2 3 0 一切工作正常 除了每当我更改代码时自动重新加载都无法工作的问题 这包括所有项目工件 控制器 域 服务 gsps css 和 javascript 文件 我的旧版本 grails 可以正常工
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht

随机推荐

  • C++ 中指针的地址交换

    如何在具有签名的函数内交换指针地址 比方说 int weight height void swap int a int b 因此 在退出该函数之后 实际参数的地址 weight and height 将被改变 有可能吗 如果要交换指针指向的
  • 为什么不使用 MD5 进行密码哈希处理?

    我有一个朋友 他是白帽黑客 他说 md5 并没有那么糟糕 而且实际上非常安全 只要我们正确使用它 我相信他是对的 据我所知 有3种方法可以破解哈希值 使用彩虹表 可以通过长 随机盐来保护 碰撞 可以通过多种盐或哈希来防止 如下例所示 生成时
  • 使用cmake为vs2013配置cuda项目并得到“无效设备功能”错误

    我使用cmake gui工具在vs2013中配置我的cuda项目 CMakeLists txt如下 project CUDA PART required cmake version cmake minimum required VERSIO
  • 为什么我会收到带有受保护静态成员的 C2248(无法访问的成员)?

    假设我有 include
  • 使 JFormattedTextField 的行为类似于 ATM 输入

    我想知道是否有办法使 JformattedTextField 或 jtextField 表现得像 atm 货币输入 我的意思是你从右到左输入 假设你输入 10 你需要再按 2 个 0 这样它就会是 10 00 当他从右向左打字时 程序会自动
  • 使用 Firebase 的 WebRTC 语音聊天

    我以前从未尝试过 webrtc 我有一个使用 Firebase 制作的应用程序 现在我正在尝试在其中添加语音通话功能 因此尝试搜索一些教程 大多数都使用 PubNub 或大多数教程基于网络应用程序 我看到了这个 stackoverflow
  • 当 fps 高于 15 时,Pygame 蛇速度太高

    在我用 pygame 制作的蛇游戏中 我很难弄清楚速度的物理原理 问题是 一旦我将 fps 设置为高于 15 蛇的速度也会增加 我知道这与毫秒等有关 我发现它可以工作 高帧率但速度慢 然而那时 我无法让 X 和 Y 正确 这样我就可以吃苹果
  • 尽管设置了 Djava.library.path 变量,仍出现 UnsatisfiedLinkError

    我正在尝试将 IBM 的 CPLEX 库与我的 java 应用程序集成 现在 我只是尝试创建一个 IloCplex 对象 我添加了 Cplex jar 它编译得很好 但是当我运行它时 public class cplexTest publi
  • 在Java中,我可以定义二进制格式的整数常量吗?

    与如何用十六进制或八进制定义整数常量类似 我可以用二进制来定义吗 在 Java 7 中 int i 0b10101010 旧版本的 Java 中没有二进制文字 请参阅其他答案以获取替代方案
  • 具有二进制颜色编码和原始输入注释的 Seaborn 热图

    我需要根据数据帧列中的值是高于还是低于阈值 将它们显示为二进制颜色图 我还需要显示原始数字 我正在使用seaborn 热图 样本数据框 Month Raw value Jan 3 72 feb 2 51 Mar 1 82 我已将该列转换为二
  • PHP file_exists($var) 不工作

    我正在尝试在笔记本上编写一些代码并使用 xampp 环境 我有以下代码 class A foreach blocks as block block dir dir2 block if file exists block true var f
  • 视图中的动态列名称 (Postgres)

    我目前正在编写一个 SQL 视图 它应该提供特定月份填充字段的计数 这就是我希望构建视图的方式 Country Current Month 12 Eg Feb 2011 Current Month 11 Current Month 10 U
  • 如何使用正则表达式查找并删除文件中的重复行? [关闭]

    Closed 这个问题是无关 目前不接受答案 这个问题与语言无关 仅使用正则表达式 我可以查找并替换文件中的重复行吗 请考虑以下示例输入和我想要的输出 输入 gt gt 11 22 22 lt duplicate 33 44 44 lt d
  • Android - 在本机和 Java 应用程序之间使用管道

    我正在 SGS2 api v 16 上进行开发 我有两个应用程序 本机和 Java 在本机应用程序中 我使用 mkfifo 函数打开一个 Unix 管道并向其写入一些字符串 在java应用程序中 我试图读取字符串 但不知何故 应用程序阻塞了
  • PHP 从 xml 属性中读取十进制整数

    我想使用 PHP 编写一个函数 从 XML 中获取数字 然后将这些数字相乘 但是 我不知道如何在 SimpleXML 中使用十进制数字 PHP xml new SimpleXMLElement
  • jquery droppable -> 避免多次删除同一对象

    我有一个包含不同可拖动元素的容器 并且有一些 目标 div 的列表 用户可以在其中放置可拖动元素 例子 想象一下 您有一个 标签 列表 房屋 计算机 汽车 和一些作为目标的文档列表 所有文档都是 div 的一部分 div 因此 目标是使用拖
  • 基本 wxWidgets 定时器

    作为 wxWidgets 的新手 我需要一些如何让 wxTimer 工作的示例代码 参考资料提供了 3 种使用方法 但不包含其中任何一种的示例代码 最理想的情况是 我想让方法 2 发挥作用 来自samples widgets gauge c
  • 计算PostgreSQL中批量查询影响的行数

    首先 是的 我已经阅读了 DO 语句的文档 http www postgresql org docs 9 1 static sql do html 所以我的问题是 我需要执行一些包含 UPDATE 语句的动态代码块并计算所有受影响的行数 我
  • UIImageView 中的 UIImage 大小

    我有一些UIImage并将其显示在UIImageView 我需要使用UIViewContentModeScaleAspectFit内容模式 这是简单的代码 UIImageView imageView UIImageView alloc in
  • Guice:根据谁获得它来注入不同的实现?

    我有两个第三方类 它们都实现了Authorizer界面 我需要为每个注入不同的实现 如果我做一个 Provides 我怎样才能实现它 以便它提供运行时所需的实现 提供者不知道是谁要求注射 理论上我可以使用 Named 但我无法修改正在注入的