问题标签 [jsr330]
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 - JSR 330 和 Guice 互操作性
有人对 JSR 330 vs Guice 有经验吗?据我所知,Guice 不是 JSR 330 的实现,但如果它是 Hibernate 和 JPA 之类的东西,则该实现支持 API 中没有的一堆附加功能。由于我已经在使用 GWT-Dispatch、Warp-persist guice-serlvet 等,通过迁移到支持 JSR 330 的 EJB 容器会有什么好处吗?
java - 使用 Jersey 和 Guice 进行 RESTful 服务的实用建议
从我在网上可以找到的信息来看,Guice + Jersey 整合的最新技术自 2008 年以来一直停滞不前,当时两支球队似乎都陷入了僵局。问题的症结在于 JAX-RS 注释执行字段和方法注入,这与 Guice 自己的依赖注入不能很好地配合。
我发现的几个例子还不足以说明:
Iqbalyusuf在 Google App Engine Java 上的 Jersey + Guice 上的帖子受到大量样板文件的影响(手动获取和调用注入器)。我希望绑定和注入应该通过 Guice 注释在幕后进行。
Jonathan Curran 的文章使用 Jersey、Guice 和 JSR-250 创建一个 RESTful 服务给了我希望,因为它更新的更多(2010 年),但仅仅展示了如何在 Guice ServletModule 中启动 Jersey 服务。但是,没有任何真正的依赖注入的例子。我想这留给读者作为练习。Curran 的帖子实际上可能是连接 Guice 和 Jersey 的正确第一步,所以我计划从那开始。
诱人的詹姆斯斯特拉坎写道:
JAX-RS 与 Spring、Guice、GuiceyFruit 或 JBossMC 等依赖注入框架配合得很好——你基本上可以选择你喜欢的任何一个。
但是从从业者的角度来看,我没有看到任何证据是真实的。
我发现缺少的是关于如何结合 JAX-RS 和 Guice 注释的实际示例和解释。例如:
- 我相信我不能对任何资源使用构造函数注入,因为 Jersey 想要控制它
- 我不确定是否可以将@Inject 与@PathParam、@QueryParam 等结合使用。
- 如何在 MessageBodyWriter 实现中使用注入
有没有人有例子,最好是有来源,结合泽西岛和吉斯而不牺牲其中一个或另一个的非平凡应用程序?不管怎样,我都会继续走这条路,但泽西和吉斯名单上的点点滴滴让我觉得我在重复其他人的工作。
java - Guice 中的 JSR-330 支持
Guice的 SVN 版本支持 JSR-330 注释(“JSR-330 集成 - 这记录了仅在 Guice SVN 中可用的实验性、未发布的功能”)。谷歌给出了建议:“现在,坚持使用 Guice 的注释和 Provider 界面。” Guice 2 现在已经一岁了,我想知道在不久的将来是否会支持 JSR-330。有人知道吗?
java - 使用@Inject 对空参数失败
我已经开始使用带有 JSR-330@Inject
注释的 Spring 3 Java Config。与 Spring 不同,如果参数为 null @Autowire
,则 Spring 在启动时不会失败。@Inject
有没有办法在 Java Config 中做到这一点?
编辑:只是澄清一下,我希望这是默认行为,因此我不必将 @Required 放在每个字段上。
java - 如何使用 Weld 轻松注入字符串常量?
我们有一种情况,我们以 Map 的形式为正在运行的程序提供外部配置。我发现 JSR-330 依赖注入提供了一种更简洁的方式来在代码中使用该配置映射,而不是传递映射或使用 JNDI 来获取它。
让 JSR-330 实现自动填写此字段。
使用 Guice,我可以设置值
我希望能够在 Weld 中做同样的事情(将“server.username”绑定到例如“foobar”)并且我知道机制最有可能是 beans.xml,但我更喜欢简单的“将此地图提供给 Weld ,请”代码替代。什么是这样做的好方法?
编辑 2013-10-16:在研究了在编译时而不是运行时工作的 Dagger 之后,我发现我们通常每个程序有 10-20 个,我们可以@Provider
接受每个配置字符串的方法,然后在配置中查找地图。这允许特定于方法的行为(包括默认值)、提供 javadoc 的能力以及将所有这些方法放在同一个类中的能力。它也适用于开箱即用的 Weld。我正在考虑在博客条目中写一个更完整的解释。
java - 直接支持 JSR-330 注入的嵌入式 Web 容器?
我们已经决定我们所有的模块化代码都应该使用 JSR-330 依赖注入,并且我们已经使用 Guice 2.1SVN 或 Java EE 6 CDI 在几个项目中进行了实际的注入,并且效果很好。
我们还有一个需要找到解决方案的场景,即我们有一个在 Java 5 上运行的嵌入式 Web 容器,我希望能够像在 Java EE 6 中一样使用 JSR-330 注入来部署 WAR 文件。
我发现 GlassFish 和 Resin 4 可以做到这一点,但是 Java EE 6 Web 配置文件对于这个目的来说太大了,因为我们在各自的嵌入式服务器中运行非常小的应用程序。
因此,问题是,是否存在易于获得的具有本机 JSR-330 支持的 Web 容器,因此我们可以将现有代码部署到其中(为 Java 5 编译),而无需将完整的 Weld 或 Guice-servlet 包含在 WAR 中。将完整的配置套件放置在调用 Web 容器的主代码中是非常好的,但我不希望在实际的 Web 应用程序部署中使用任何 guice/Spring/weld jar。
java - 如何在 Spring 中以编程方式**配置 JSR-330 @Provider 和 @Inject @Named("foo") String?
我们决定为我们未来的模块化工作使用带有 JSR-330 注释的依赖注入,并且对基于 Guice 2 SVN 的第一个可交付成果感到非常满意。
现在我们需要通过单元测试确保并记录我们需要的构造,当以编程方式配置时也可以在 Spring 中工作(我们希望与 Guice 相同的重构支持,因此没有 XML 文件)。我有问题,@Provider
但@Inject @Named("foo") String
我已经做了简单@Inject
的工作:
其中 LIBL_Object 是要注入的基类,但 CORE_Provider 没有像我希望的那样在 Spring 中注册。
CORE_Provider 的实现是
我想把它注入
我们还发现我们可以使用@Named 标签非常清楚地传递配置值。此代码如下所示:
然后我们可以使用 Guice 注册这个字符串
所以这两个问题是:
- 如何
@Provider
以编程方式向 Spring 3 注册课程? - 如何使用 Spring 3 注册一个字符串常量,以便 @Named 正确选择它?
java - Weld/CDI 的最佳调试技巧是什么?
Java EE 6 的优点之一是新的依赖注入框架 - 带有 Weld 参考实现的 CDI - 这促使我们开始以与实现无关的方式在内部迁移到 JSR-330,其明确目标是能够拥有一个被冻结的核心 jar,然后能够添加额外的 jar,提供新模块替换核心 jar 中的功能。
我现在正在与 Weld 一起完成上述工作,坦率地说,幕后的魔法实在是太多了。它要么起作用,要么不起作用,并且默认情况下它不会对发生的事情提供太多帮助,因此您可以调查错误并修复它。
我希望有一些开关可以轻松启用以下功能:
- 扫描了哪些类路径条目以及在哪里扫描?结果如何?
- 哪些 bean 可用于哪个类的注入?
- 是什么导致给定的 bean 以后不考虑?给定的罐子?
换句话说,我需要更详细地了解决策过程。出于某种原因,这不是 Guice 所需要的,也许是因为魔法少得多,也许是因为错误消息非常好。
您如何调试 Weld 应用程序,它有多大帮助?
java - spring-context 是否支持 bean 实例上的 JSR-330 限定符?
Spring 有自己的Qualifier
注解,我认为它相当于javax.inject.Named
注解,而注解又是 JSR-330 中的具体限定符。
所以,我想知道哪个版本的 Spring(如果有的话)支持 Qualifier?
这是我的示例用法,不幸的是它不适用于 spring-context 3.0.5:
java - Spring DI中关于qualifier的问题
通常,合格的组件将被注入具有相同限定符的注释字段:
我想要的是,如果没有定义具有特定限定符的组件,我想给一个默认的,所以redApple
上面的例子中将注入一个Apple1
.
可能吗?或者我可以为 Spring DI 实施特定的限定符匹配策略吗?
** 编辑 **
我知道子类会起作用,但这是一个描述问题的例子,所以子类在这里不适用。