gpt4 book ai didi

java - 在 JSON 配置文件中注入(inject) Spring Boot 应用程序属性

转载 作者:行者123 更新时间:2023-12-03 03:23:48 24 4
gpt4 key购买 nike

我正在将 Azure Application Insight 服务集成到我的 Spring Boot 应用程序中。src/main/resources/applicationinsights.json 用于配置。不知道如何将环境变量注入(inject)其中。我试过这个

applicationinsights.json

{
"connectionString": "InstrumentationKey=${appInsightInstrumentationKey};IngestionEndpoint=https://eastus-8.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/"
}

其中 appInsightInstrumentationKey 可作为 Spring 环境变量的一部分使用。

这会引发错误

Illegal character in pathat java.base/java.net.URI.create(URI.java:883)at reactor.netty.http.HttpOperations.resolvePath(HttpOperations.java:429)

这意味着变量不会被实际值替换。如有任何建议,我们将不胜感激。

最佳答案

我已经重现了您的需求,并且可以在 Spring Boot 中从 Json 文件加载配置,如下所示:

  1. Resources 文件夹和 META-INF 目录中创建一个 Application.json 文件。在 META-INF 目录中创建一个名为 spring.factories 的文件并添加以下配置:
org.springframework.boot.env.PropertySourceLoader=com.example.demo.JsonPropertySourceLoader

enter image description here

  • 创建 .json 文件并添加以下代码:
  • {
    "server.port":9080,
    "testdata1":"testing",
    "valuesMap":"{key1: '1', key2: '2', key3: '3'}"
    }

    enter image description here

  • 创建一个名为 JsonPropertySourceLoader 的类,它将扩展以下包中的 YAMLPropertySourceLoader 类:
  • import  org.springframework.boot.env.YamlPropertySourceLoader;
    public  class  JsonPropertySourceLoader extends  YamlPropertySourceLoader  {
    @Override
    public String[] getFileExtensions() {
    return new String[] { "json" };
    }
    }

    enter image description here

  • 使用以下代码创建一个休息 Controller 类:
  • @RestController
    @SpringBootApplication
    public class DemoApplication {

    @Value("${testdata1}")
    private String testData1;

    @Value("#{${valuesMap}}")
    private Map<String, Integer> valuesMap;

    @GetMapping("/")
    public String echo() {
    System.out.println("Iterating the map....");
    for (Map.Entry<String, Integer> entry : valuesMap.entrySet()) {
    System.out.println("Key = " + entry.getKey()
    + ", Value = " + entry.getValue());
    }
    return testData1;
    }
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }
    }

    回应:

    从 json 配置文件中获取值。

    enter image description here

    请参阅我的 github repo完整代码。

    关于java - 在 JSON 配置文件中注入(inject) Spring Boot 应用程序属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76140441/

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