Weld/CDI 的最佳调试技巧是什么?

2024-02-01

Java EE 6 的优点之一是新的依赖项注入框架 - 具有 Weld 参考实现的 CDI - 它促使我们开始以与实现无关的方式内部迁移到 JSR-330,其明确目标是能够拥有核心 jar 被冻结,然后能够添加额外的 jar,提供新的模块来替换核心 jar 中的功能。

我现在正在与 Weld 一起完成上述工作,坦率地说,幕后有太多的魔力。它要么有效,要么无效,并且默认情况下它不会对发生的情况提供太多帮助,因此您可以调查问题所在并修复它。

我希望有一些开关可以轻松实现以下功能:

  • 扫描哪些类路径条目以及在哪里扫描?结果如何?
  • 哪些豆类可用于哪个类别的注射?
  • 是什么导致稍后不考虑给定的 bean?给定的罐子?

换句话说,我需要更详细地了解决策过程。由于某种原因,Guice 并不需要这样做,也许是因为魔法少得多,也许是因为错误消息非常好。

您如何调试 Weld 应用程序?它有多大帮助?


简短的回答:CDI 没有专用的调试选项(因为规范不需要这样的东西),Weld 也没有专用的调试选项。

长答案:您可以自己做很多事情。熟悉一下CDI的扩展机制 http://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html/extend.html,您会发现您可以轻松(真的!)编写自己的扩展来调试您所需的信息

扫描哪些类路径条目 在哪里?结果如何?

ProcessAnnotatedType-Event

哪些豆类可以注射 哪个班级?

查询 BeanManager 即可。

是什么导致给定的 bean 不被 以后考虑?给定的罐子?

AfterBeanDiscovery- 事件并查看 BeanManager 中的内容。基本上,以下场景使 ManageBean 不符合注入条件:

  • 它不是 ManagedBean (就像 jar 中没有 beans.xml 一样)
  • 它不符合托管 Bean 的资格(https://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html/beanscdi.html#d0e794 https://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html/beanscdi.html#d0e794)
  • 它没有 BeanType (@Type{})
  • 它被否决(缝焊)或被任何其他扩展机制抑制
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Weld/CDI 的最佳调试技巧是什么? 的相关文章

随机推荐

  • [] 类型的特殊运行时表示?

    考虑长度索引向量的简单定义 data Nat Z S Nat infixr 5 gt data Vec n Nat a where V0 Vec Z a gt a gt Vec n a gt Vec S n a 当然 我有时会需要以下功能
  • “registration_ids”字段不是 JSON 数组 (Firebase)

    我遇到了 Firebase registration ids 的问题 当我从 Rest Client 发送请求时 我得到了成功的响应 multicast id 4650719213012935695 success 2 failure 0
  • CSS - 水平导航列表项填充所有可用空间

    使用 CSS 如何才能拥有一个水平列表并让所有列表项填充父空间的可用宽度 我将 li 的左侧浮动 然后对每个应用一些填充 但我似乎无法填充整个宽度 这样就在右侧留下了一个间隙 我可能会将最后一个项目浮动到右侧 但会发生的情况是 导航项目的活
  • 我应该使用哪些字符串操作函数?

    在我的 Windows Visual C 环境中 有很多替代方法可以完成相同的基本字符串操作任务 例如 为了进行字符串复制 我可以使用 strcpy ANSI C 标准库函数 CRT lstrcpy kernel32 dll中包含的版本 S
  • 如何以不同的百分比混合两种颜色

    我有两种颜色和一个视图组件 颜色一是我的组件的背景 我将把背景颜色更改为颜色二 但不是突然的 改变类似动画 例如 第二个 1 90 颜色 1 10 颜色 2 第二个 1 80 颜色 1 20 颜色 2 第二个 1 10 颜色 1 90 颜色
  • 如何迭代数组的数组

    迭代数组的最佳方法是什么 sounds Name 1 link 1 Name 2 link 2 Name 3 link 3 Name 4 link 4 我想要 HTML 格式的输出ul li结构 ul li Name 1 link 1 li
  • java/IBSQL 中的 SQL Firebird 实现

    所以尝试将该 SQL 代码放入我的 java 应用程序中 SELECT DISTINCT StRzImRo Rohstoff StRo Bezeichnung CAST SUM BwLsImAt Lieferungen StRzImRo M
  • 在 Windows 上用 C++ 计算 CPU 时间

    C 有没有办法计算运行给定程序或例程需要多长时间在CPU时间里 我使用在 Windows 7 上运行的 Visual Studio 2008 如果你想知道一个进程使用的CPU时间总量 clock nor rdtsc 直接或通过编译器内在函数
  • EventMachine 和 Ruby Threads - 这里到底发生了什么?

    我们一起使用 Rails 和 EventMachine 当将该组合与 Passenger 一起使用时 需要完成一些非常具体的设置 经过大量的试验和错误 我的 EventMachine 初始化运行良好 但我想更好地理解代码 正如您在下面的代码
  • Android 中的电源键事件?

    我想听电源键事件 我怎样才能做到这一点 目前我使用的代码是这样的 Override public boolean onKeyDown int keyCode KeyEvent event if KeyEvent KEYCODE POWER
  • 如何在 Subversion 中设置共享工作副本

    我对 Subversion 还很陌生 是否可以在网络可用共享 c svn projects website 上拥有每个人 在本例中为 3 个使用者 都可以检出和提交文件的工作副本 我们不需要构建服务器 因为它是一个 asp 站点 并且设计人
  • C# 检查表达式括号是否有效[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 表达方式 a i 1 8 9 应该返回 true 因为这样编写语法是有效的 每个左括号在正确的位置都有一个右闭合器 并且所有括号都处于
  • 如何将逗号和分号分隔的字符串拆分为二维数组

    假设我有一个变量users包含以下文本字符串 其中每个用户用分号分隔 每个用户的每个属性用逗号分隔 Bob 1234 email protected cdn cgi l email protection Mark 5678 email pr
  • 如何在 Ruby 中找到两个 Date 对象之间的天数?

    如何找到两个 Date 对象之间的天数 从结束日期减去开始日期 endDate beginDate
  • 解析 haskell 保留注释/格式

    我想做一些源代码转换 自动导入列表清理 并且我想保留注释和格式 我断断续续地听到过一些关于执行此操作的解析器的内容 我认为是 ghc 解析器 看来我可以通过从文件中提取内容来使用 hs src exts Language Haskell E
  • 库模块中的崩溃报告

    我已经尝试过 crashlytics 但不支持 这是我从他们团队得到的回复 感谢您对此的关注 Crashlytics 或 Fabric 的任何部分都不能包含在分发给外部应用程序的任何 SDK 中 正如您提到的 这将导致 SDK 和应用程序发
  • 查看运行“sbt”中“.sbtopts”中的选项

    根据这有帮助post https stackoverflow com a 14561346 409976 我删除了我的 sbtconfig 并添加了 sbtopts cd myProject cat sbtopts J Xmx4G J XX
  • 如何将 UIImage 转换为 BMP 并另存为数据(不是 JPG 或 PNG)

    我正在我的 iOS 应用程序 Swift 3 和仅支持 BMP 格式的应用程序 在 MS Windows 上 之间同步 BMP 图像 在 MS Windows 应用程序上创建的 BMP 图像作为 base64 字符串下载 另存为Data并使
  • 当源中存在其他静态文件时,为什么我无法在 django 项目中添加静态文件?

    我正在尝试为 Heroku 构建一个 Django 应用程序 并且已经完成了民意调查教程并且Heroku 文档 https devcenter heroku com articles django assets 当使用基本的 Django
  • Weld/CDI 的最佳调试技巧是什么?

    Java EE 6 的优点之一是新的依赖项注入框架 具有 Weld 参考实现的 CDI 它促使我们开始以与实现无关的方式内部迁移到 JSR 330 其明确目标是能够拥有核心 jar 被冻结 然后能够添加额外的 jar 提供新的模块来替换核心