问题标签 [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.

0 投票
2 回答
2033 浏览

java - 如何使 Jersey 与 Dagger 依赖注入一起工作?

Jersey 通常使用 HK2 依赖注入,但我想将 Jersey 与 Dagger 2 一起使用。Dagger 和 HK2 都实现了 JSR 330,我已经将其作为证据表明这应该是可能的,无需太多努力。我找到了让 Jersey 与 CDI(例如 Weld)、Spring DI 和 Guice 一起工作的方法,但我在 Dagger 上找不到任何东西。

提供一些上下文:我在 SE 环境中运行 Grizzly–Jersey 服务器,而不是在 EE 容器中。我的 Maven 项目有com.google.dagger:daggerorg.glassfish.jersey.containers:jersey-container-grizzly2-http作为依赖项,但没有 org.glassfish.jersey.inject:jersey-hk2,因为我想用 Dagger 替换 HK2。

资源类如下所示:

Dagger 组件可以定义如下:

因此主要方法看起来类似于:

立即运行应用程序会导致异常:IllegalStateException: InjectionManagerFactory not found.似乎需要该工厂的 Dagger 实现。

我的问题是:如何将 Dagger 与 Jersey 集成?

0 投票
2 回答
314 浏览

java - Java - 仅在没有字段@Autowired 的超级构造函数中注入 bean

我正在处理一种设计情况,我不确定如何解决它,或者我的微设计是否有任何问题。

  • 我需要将 A 类中的“@Inject Param2 a2”更改为通过构造函数注入,因此代码是可测试的,并且我将清除与此相关的代码异味。
  • 我不想从 B 构造函数发送它,因为我必须在 B 构造函数、A 构造函数和 A 的所有实现中的每个构造函数中再添加一个参数...但是子类永远不需要知道 Param2实例。
  • Param2 可能是静态的,但需要注入,因为它是组件(@Named),所以我没有找到静态注入的方法。

限制如下:

  1. 具有要使用的自定义注释和要实现的接口的第 3 方框架
  2. 代码必须是可测试的,因此不允许在字段上使用 @Inject/@Autowired
  3. 我们被限制使用在提到的自定义框架中“封装”的 Spring,因此我们只能使用纯 Java (JSR-330)。(如果 Spring 中有任何解决方案,也很高兴知道它)
0 投票
0 回答
550 浏览

spring - 如何使用`javax.inject.Qualifier`在spring应用程序上下文中获取bean?

JSR-330 提供@Qualifier限定 bean。例如,定义以下限定符注释。

并像这样使用它

它确实有效。

但是我怎样才能得到豆子ApplicationContext呢?

0 投票
1 回答
60 浏览

android - firebase 项目中是否需要 dagger2?

我知道 firebase + android architecture 1.0 是一个很好的组合。

但是firebase + android architecture 1.0 + dagger2怎么样?

我正在创建一个社交应用程序,我一直在单独在互联网上学习,我很困惑。

我做了很多研究。但我没有得到明确的答案。

0 投票
1 回答
1073 浏览

java - 如何在没有任何 XML 且没有特定于 Spring 的注释的情况下将 JSR 330 与 Spring 作为实现一起使用?

我想使用 JSR330(@Inject @Named,@Singleton,...)。所以由于spring是常用的,所以我想用spring作为底层实现。但我不知道它是否可以使用:

  1. 带 JSR330
  2. 以 Spring 作为实现
  3. 如果没有 spring 特定的注释,则只允许使用 JSR330 注释。这不就是规范的全部内容。
  4. 没有 XML

我尝试了以下但没有成功:

输出失败:

因此,如果 JSR330 提供 DI 并且 spring 支持 JSR330,是否可以使用带有JSR 330 注释且没有任何 spring XML 的 Spring?

如果这是不可能的,你能告诉我为了让它工作我需要使用的绝对最小的弹簧注释集(请不要使用 xml)是什么。

0 投票
0 回答
1880 浏览

java - 使用 Micronaut 进行简单的 Java 字段注入,缺少哪些步骤?

我还不确定是否走错了路。Micronaut 入门页面上有一个 V8 引擎和注入车辆的示例。

考虑到这个例子。使用 Java 使用 Micronaut 实现“模型 A”的最直接方法是什么?如果没有直接的方法,那么与 Micronaut 最接近的放手方法是什么?

我用这样一个例子对香草场注入的简单看法是这样(使用Java),我将它标记为“模型A”......

A型

注释处理器使用的地方提供了@Singleton Vehicle此示例中的实例。或者在非singleton-s的情况下创建一个新的实例。

无论哪种方式,该过程的结果都是不需要编写代码来“实例化”代码或找到一个工厂来明确地这样做。

该示例本身继续演示我将标记为“模型 B”的方法(使用 Groovy)......

B型

事实上,这不仅仅是写作:

对于某些库,您需要初始化范围或上下文,我明白了。问题归结为我必须做什么才能注入 Vehicle,如我的代码所示。

我做了一个@Singleton并尝试到@Inject该领域。引用为 NULL。然后我做了一个@Provider并设置了一个断点。那不叫。

  • 我可以做“模型A”吗?
  • 如果是,需要做什么?

我浏览了很多做伟大事情的例子。我也很想涉足那些花哨的东西。现在我在地下室寻找通往一楼的路。非常感谢您的指导。

0 投票
2 回答
1578 浏览

java - Is it safe to remove @Named annotations without a name?

A tonne of code at my company uses the javax.inject.Named annotation with the default value, which the Javadoc indicates is the empty string "".

For example:

This does not appear to add any value, since the empty string doesn't have any semantic meaning. If I remove the @Named annotations will there be any harmful effects?

The question What is javax.inject.Named annotation supposed to be used for? describes how @Named functions, but doesn't explain any special significance of the empty string, or why it would be necessary or beneficial to omit the actual name.

The question When should you explicitly name a Managed Bean? likewise talks about when you would want to use names to differentiate injectable beans, but doesn't provide any rationale for the use of the empty string as a name.

Can I delete these un-named @Named annotations without breaking anything?

0 投票
2 回答
5864 浏览

spring - 春季启动@ConfigurationProperties 不起作用

我正在使用@ConfigurationProperties自动配置属性。我的代码在 IDE 中运行。但是当我在命令行中运行 jar 时,它不起作用。

配置类:

主类:

应用程序.yml:

如果我autowire使用 Location 类,我会看到创建的实例。但是没有设置属性。代码未输入setBase()方法。

应用程序将其打印在控制台中。

0 投票
1 回答
700 浏览

java - 使用注释为 Google guice MapBinder 提供数据

在 Java 项目中,使用 Gradle 5.2 和 Google Guice 进行构建。

我使用MapBinderhttp://google.github.io/guice/api-docs/latest/javadoc/com/google/inject/multibindings/MapBinder.html):

这工作正常,但现在,我想要一个“插件架构”,所以避免导入所有 Snack 类,而是直接在类中声明它,例如:

如何?

0 投票
1 回答
215 浏览

spring - 如果我们将@Inject 与@Component 一起使用,那么默认的bean 作用域是什么?

我知道当我们使用@Autowiredwith时默认的 bean 范围是单例的@Component

但是如果我们将 JSR-330@Inject与 spring 一起@Component使用(不使用@Scopeor @Singleton)呢?