如何使用Spring在属性文件中注入数组

问题描述 投票:0回答:2

我使用Spring Boot“1.5.10.RELEASE”来管理.properties文件,如下所示:

#Queue1
br.net.enterprise.server.name.1=server1.company.net
br.net.enterprise.server.port.1=4416
br.net.enterprise.server.protocol.1=t3
br.net.enterprise.server.queue.1=DistributedQueue-ERROR
br.net.enterprise.server.sampleRateMinutes.1=2
#Queue2
br.net.enterprise.server.name.2=a.b.c.d
br.net.enterprise.server.port.2=12234
br.net.enterprise.server.protocol.2=t4
br.net.enterprise.server.queue.2=DistributedQueue-ABC
br.net.enterprise.server.sampleRateMinutes.2=5

这样我就可以有'n'队列配置。在我的java文件中,我最终得到这个:

@Value("${br.net.enterprise.server.name}")
private List<String> names;
@Value("${br.net.enterprise.server.port}")
private List<String> ports;

有没有办法让这个行为与spring和Properties文件一起使用?

提前致谢。

java spring spring-boot-actuator
2个回答
0
投票

您可以使用@ConfigurationProperties

像这样更改您的属性

#Queue1
br.net.enterprise.server.1.name=server1.company.net
br.net.enterprise.server.1.port=4416
br.net.enterprise.server.1.protocol=t3
br.net.enterprise.server.1.queue=DistributedQueue-ERROR
br.net.enterprise.server.1.sampleRateMinutes=2
#Queue2
br.net.enterprise.server.2.name=a.b.c.d
br.net.enterprise.server.2.port=12234
br.net.enterprise.server.2.protocol=t4
br.net.enterprise.server.2.queue=DistributedQueue-ABC
br.net.enterprise.server.2.sampleRateMinutes=5

声明这样的两个类

@Configuration
@Getter
@Setter
public class QueueConfig {

  private String name;
  private String port;
  private String protocol;
  private String queue;
  private String sampleRateMinutes;

}


@Configuration
@Getter
@Setter
@ConfigurationProperties(prefix = "br.net.enterprise")
public class MyConfig {
  Map<Integer, QueueConfig> server;
}

这将创建一个这样的地图

enter image description here

将1和2更改为属性文件中有意义的内容。这将是地图中的关键,您可以从中阅读。


0
投票

您需要存储由某个char ex分隔的值。逗号分开

br.net.enterprise.server.name =server1.company.net,server2.company.net,server3.company.net

接下来就是这样读的:

 @Value("#{'${br.net.enterprise.server.name}'.split(',')}") 
 private List<String> names;
© www.soinside.com 2019 - 2024. All rights reserved.