当前位置: 首页 > 面试题库 >

如何使用注释将值注入到bean构造函数

庞阳波
2023-03-14
问题内容

我的spring bean具有一个带有唯一强制性参数的构造函数,我设法用xml配置对其进行了初始化:

<bean name="interfaceParameters#ota" class="com.company.core.DefaultInterfaceParameters">
  <constructor-arg>
    <value>OTA</value>
  </constructor-arg>
 </bean>

然后,我像这样使用此bean,并且效果很好。

 @Resource(name = "interfaceParameters#ota")
 private InterfaceParameters interfaceParameters;

但是我想用注释指定contructor arg值,例如

 @Resource(name = "interfaceParameters#ota")
 @contructorArg("ota") // I know it doesn't exists!
 private InterfaceParameters interfaceParameters;

这可能吗 ?

提前致谢


问题答案:

首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的@Value注释(spring 3.0)

@Component
public class DefaultInterfaceParameters {

    @Inject
    public DefaultInterfaceParameters(@Value("${some.property}") String value) {
         // assign to a field.
    }
}

就我所看到的问题而言,这可能不适合你,因为你似乎定义了同一类的多个bean,它们的名称不同。为此,你不能使用注释,必须在XML中定义它们。

但是,我认为拥有这些不同的bean并不是一个好主意。你最好只使用字符串值。但是我无法提供更多信息,因为我不知道你的确切课程。



 类似资料:
  • 问题内容: 我有一堂课: 配置文件 我如何将其注入一些构造函数,即: 我希望此字符串具有从Config注入的值。那可能吗? 问题答案: 您将必须命名Bean,然后在自动装配引用该名称时使用注释。 例: 配置文件 SomeC.java

  • 我有一个接口,它在两个地方定义如下: 我的客户端实现类没有任何注释,只有必需的构造函数。在这种情况下,如何限定正确的接口实现用法?我不想使用,因为在我的例子中,将其中一个用法命名为primary在语义上是不正确的(它们在某种意义上是相等的)。我需要用相同的实现类传递相同的接口,但针对受尊敬的客户机的特定用例进行了不同的配置。我想命名一个参数就足够了,通过这个参数我将实现注入到bean创建方法中,但

  • 有人能帮助实现没有注释的Guice吗? pom。xml 我所尝试的: 我得到的错误是: 我理解这个错误。 但是我希望我可以“指向”Guice到正确的构造函数......而不是使用注释。 如您所见,使用默认/空构造函数不是一个好选择,因为这个示例很简单,但我想坚持使用基于构造函数的注入。 附加: 根据我在评论中从赫曼特·辛格那里得到的“暗示”,我想我离得更近了。 我创建了一个ProductionIn

  • 我正试图在计算机上实现这个例子https://developer.android.com/jetpack/docs/guide.这就解释了Android应用程序的结构。 当我使用相同的代码时,我会出现以下错误。 我可以找出这个错误与 当我为ViewModel编写默认的零输入构造函数时,我得到了以下错误。 我想不出这个错误的原因和解决方法。

  • 我有一个类< code >配置: 配置java 我如何将它注入到某个构造函数中,例如: 我希望这个字符串 从配置中注入了值。这可能吗?

  • 通常,我会使用在中启动mock。 我怎样才能做到这一点?到目前为止,我不想在构造函数中注入,因为它会混合业务参数和依赖项。