gpt4 book ai didi

Spring boot - Application.properties 中的自定义变量

转载 作者:IT老高 更新时间:2023-10-28 13:46:59 28 4
gpt4 key购买 nike

我有一个使用 restful api 的 spring boot 客户端。我可以使用 application.properties 中的任何 key 条目,而不是在 java 类中硬编码 REST API 的 IP 地址?

如果没有,我可以创建一个自定义条目吗?

谢谢

最佳答案

Spring Boot 使用的基础设施可以以完全相同的方式在您自己的项目中使用。您在@zmitrok 回答中评论了“未知属性”警告。那是因为您的属性没有元数据,所以 IDE 不知道它。

如果可以的话,我强烈建议您不要使用 @Value,因为它与 Spring Boot 提供的相比相当有限(@Value 是 Spring 框架的一项功能)。

首先为您的 IP 创建一些 POJO:

@ConfigurationProperties("app.foo")
public class FooProperties {

/**
* IP of foo service used to blah.
*/
private String ip = 127.0.0.1;

// getter & setter
}

那么你有两个选择

  1. @Component 放在 FooProperties 上,并通过在任何 @Configuration< 上添加 @EnableConfigurationProperties 来启用配置属性的处理 类(从 Spring Boot 1.3.0.M3 开始,这最后一步不再需要)
  2. 保持 FooProperties 原样,并将 @EnableConfigurationProperties(FooProperties.class) 添加到您的任何 @Configuration 类中,这将创建一个 Spring Bean自动为你。

一旦你完成了 app.foo.ip 就可以在 application.properties 中使用并且你可以 @Autowired FooProperties 在代码中查找属性的值

@Component
public MyRestClient {

private final FooProperties fooProperties;

@Autowired
public MyRestClient(FooProperties fooProperties) { ... }

public callFoo() {
String ip = this.fooProperties.getIp();
...
}

}

好的,所以您的 key 在 IDE 中仍然是黄色的。最后一步是add an extra dependency that will look your code and generate the relevant meta-data at build time .将以下内容添加到您的 pom.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

瞧,您的 key 已被识别,您拥有 javadoc,IDE 为您提供默认值(您在字段上初始化的值)。一旦确定,您就可以使用转换服务处理的任何类型(即 URL),并且该字段上的 javadoc 用于为您的 key 生成文档。

您还可以在您的字段上添加任何 JSR-303 约束验证(例如,一个正则表达式来检查它是一个有效的 ip)。

检查 this sample projectthe documentation了解更多详情。

关于Spring boot - Application.properties 中的自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32058814/

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