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

发布于 2021-02-02 18:12:07

我的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;

这可能吗 ?

提前致谢

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    首先,必须在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并不是一个好主意。你最好只使用字符串值。但是我无法提供更多信息,因为我不知道你的确切课程。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看