【问题标题】:Multiple values of a property in Spring bean [duplicate]Spring bean中属性的多个值[重复]
【发布时间】:2020-05-16 01:13:41
【问题描述】:

我需要在 Spring bean 属性值中设置两个具有相同名称的值。

目前我有

我在 Java 类中使用这个属性名称:private String siteUid;

我的要求是添加另一个具有不同值的属性名称

请建议,如果我可以编写两个属性值,以及如何在 Java 类中使用相同的值

【问题讨论】:

标签: java spring


【解决方案1】:

您可以使用@Value 注释。

如果您的属性文件包含:

foo.bar.property1=hello
foo.bar.property2=world

你可以在你的 Java 类中使用:

@Component
public class SomeClass {

    @Value("${foo.bar.property1}")
    private String variable1;  // will be set to "hello"

    @Value("${foo.bar.property2}")
    private String variable2;  // will be set to "world"
}

请注意,实际变量的名称(即variable1variable2)是不相关的;他们可以是你想要的任何东西。重要的部分是 @Value 中包含的字符串与属性文件中的键匹配。

【讨论】:

  • 是的,我犯了一个愚蠢的错误。我会编辑
【解决方案2】:

不太清楚你所说的添加是什么意思。一般来说,只要您应该使用 @Value 注释,到目前为止最灵活的方法就是在自动装配的构造函数中使用值:

@Component
public class MyComponent {
   private String myProperty;

   public MyComponent(@Value('${app.value1}') String value1, @Value('${app.value2}') String value2) {
      // here you can even concatenate the value (hence I've said that its not clear what is 'add' but in general you can manipulate however you want
     this.myProperty = value1 + value2; 
   }

}

【讨论】:

    【解决方案3】:

    您可以在这里使用 Spring 表达式语言来添加/连接两个属性

    @Value("#{'${property1}'.concat('${property2}')}") String parameter

    这里的concatString 方法。由于要求对我来说不是很清楚,所以你可以尝试其他字符串方法来实现你想要的。

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2012-12-24
      • 2012-02-29
      • 2012-06-29
      • 2013-05-18
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多