gpt4 book ai didi

java - 注入(inject) yaml 列表作为 jvm 参数?

转载 作者:行者123 更新时间:2023-12-02 05:39:06 26 4
gpt4 key购买 nike

尝试使用Micronaut框架提供的IP模式过滤器。我想要的是在应用程序启动时注入(inject)配置。现在 yaml 文件接受 IP 列表作为输入。但是要在运行时注入(inject)配置,我如何将 IP 列表传递到此 yaml 属性。

当前情况

micronaut:
security:
enabled: true
ip-patterns:
- 127.0.0.1
- 192.168.1.*

不确定下面的东西是否有效

预期

micronaut:
security:
enabled: true
ip-patterns:${list_of_Ip's}

最佳答案

如您所知,ip-patterns 是一个列表,您不能将 ${} 表示为列表。您可以创建自定义属性源以将环境变量转换为配置。

例如:

public class Application {

public static void main(String[] args) {
String patternsEnv = System.getenv("SOME_ENV");
List<String> ipPatterns = Arrays.stream(patternsEnv.split(","))
.map(StringUtils::trimToNull)
.filter(Objects::nonNull)
.collect(Collectors.toList());
Map<String, Object> map = new HashMap<>(1);
map.put("micronaut.security.ip-patterns", ipPatterns);
PropertySource propertySource = new MapPropertySource("ip-patterns", map) {

@Override
public int getOrder() {
return 0;
}
};

Micronaut.build(null)
.mainClass(Application.class)
.propertySources(propertySource)
.start();
}
}

关于java - 注入(inject) yaml 列表作为 jvm 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com