我有一个接口,它在两个地方定义如下:
@Configuration
public class AppContext {
@Bean
public SomeInterface usageOne() {
return new SameImpl();
}
@Bean
public SomeInterface usageTwo() {
return new SameImpl(someOtherConfig);
}
@Bean
public Client clientOne(SomeInterface usageOne) {
return new Client(usageOne);
}
@Bean
public OtherClient clientTwo(SomeInterface usageTwo) {
return new OtherClient(usageTwo);
}
}
我的客户端实现类没有任何注释,只有必需的构造函数。在这种情况下,如何限定正确的接口实现用法?我不想使用@primary
,因为在我的例子中,将其中一个用法命名为primary在语义上是不正确的(它们在某种意义上是相等的)。我需要用相同的实现类传递相同的接口,但针对受尊敬的客户机的特定用例进行了不同的配置。我想命名一个参数就足够了,通过这个参数我将实现注入到bean创建方法中,但是Spring抱怨说:需要一个bean,但是2个were found
。我不明白应该如何使用@qualifier
注释。
我使用Spring Boot2.0.4.Release和在单独的配置类中创建的受尊敬的bean和客户端运行,因此在创建OtherClient
时,我不能像以下那样调用usageTwo()
方法:new OtherClient(usageTwo());
,因为客户端配置类中没有此方法。
正如@chrylis在注释中提到的,您可以简单地将@qualifier
注释添加到@bean
方法中,如下所示:
@Bean
public Client clientOne(@Qualifier("usageOne") SomeInterface usageOne) {
return new Client(usageOne);
}
@Bean
public OtherClient clientTwo(@Qualifier("usageTwo") SomeInterface usageTwo) {
return new OtherClient(usageTwo);
}
为@qualifier
注释指定的值是相应bean的名称。这是相应的@bean
方法的名称,或者是注释的值(如果像下面这样使用)@bean(“usageThree”)
。
问题内容: 我的spring bean具有一个带有唯一强制性参数的构造函数,我设法用xml配置对其进行了初始化: 然后,我像这样使用此bean,并且效果很好。 但是我想用注释指定contructor arg值,例如 这可能吗 ? 提前致谢 问题答案: 首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的注释(spring 3.0) 就我所看到的问题而言,这可
我正试图在计算机上实现这个例子https://developer.android.com/jetpack/docs/guide.这就解释了Android应用程序的结构。 当我使用相同的代码时,我会出现以下错误。 我可以找出这个错误与 当我为ViewModel编写默认的零输入构造函数时,我得到了以下错误。 我想不出这个错误的原因和解决方法。
问题内容: 我有一堂课: 配置文件 我如何将其注入一些构造函数,即: 我希望此字符串具有从Config注入的值。那可能吗? 问题答案: 您将必须命名Bean,然后在自动装配引用该名称时使用注释。 例: 配置文件 SomeC.java
注入是将依赖注入对象的过程。 构造函数注入很常见。 在此过程中,依赖项作为参数注入构造函数。 请参阅下面的示例。 创建一个名为GuiceTester的java类。 GuiceTester.java import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Inj
请帮助理解在哪种情况下我应该使用构造函数注入和设置器注入。请帮我举个合适的例子。 先谢谢你。