spring Sping Boot -Application.properties中的自定义变量

um6iljoc  于 2024-01-05  发布在  Spring
关注(0)|答案(4)|浏览(180)

我有一个Sping Boot 客户端,它使用了一个REST风格的API。除了在java类中硬编码REST API的IP地址,在application.properties中有没有可以使用的键条目?
如果没有,我可以创建一个自定义条目吗?
谢谢

mqkwyuun

mqkwyuun1#

Sping Boot 使用的基础架构可以以完全相同的方式在您自己的项目中使用。您在@zmitrok回答中评论了“unknown property”警告。这是因为您的属性没有元数据,所以IDE不知道它。
我强烈建议你不要使用@Value,如果可以的话,因为它与Sping Boot 提供的功能相比相当有限(@Value是Spring Framework的一个功能)。
首先为您的IP创建一些POJO:

  1. @ConfigurationProperties("app.foo")
  2. public class FooProperties {
  3. /**
  4. * IP of foo service used to blah.
  5. */
  6. private String ip = 127.0.0.1;
  7. // getter & setter
  8. }

字符串
那你有两个选择
1.将@Component放在FooProperties上,并通过在任何@Configuration类上添加@EnableConfigurationProperties来启用配置属性的处理(从Sping Boot 1.3.0.M3开始,最后一步不再需要)
1.保持FooProperties不变,并将@EnableConfigurationProperties(FooProperties.class)添加到任何@Configuration类中,这将自动为您创建Spring Bean。
一旦你完成了,app.foo.ip可以在application.properties中使用,你可以在代码中@AutowiredFooProperties来查找属性的值

  1. @Component
  2. public MyRestClient {
  3. private final FooProperties fooProperties;
  4. @Autowired
  5. public MyRestClient(FooProperties fooProperties) { ... }
  6. public callFoo() {
  7. String ip = this.fooProperties.getIp();
  8. ...
  9. }
  10. }


好了,您的密钥在IDE中仍然是黄色的。最后一步是添加一个额外的依赖项,它将在构建时查看您的代码并生成相关的元数据。

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-configuration-processor</artifactId>
  4. <optional>true</optional>
  5. </dependency>


瞧,你的键被识别了,你有了javadoc,IDE给了你默认值(你在字段上初始化的值)。一旦你有了,你就可以使用转换服务处理的任何类型(即URL),字段上的javadoc用于为你的键生成文档。
您还可以在字段上添加任何JSR-303约束验证(例如,正则表达式检查它是否是有效的ip)。
查看this sample project和文档以了解更多详细信息。

展开查看全部
7vhp5slm

7vhp5slm2#

与将IP硬编码到属性文件中不同,您可以使用
第一个月
Sping Boot 将自动拾取它,

  1. @Value("${my.property}")
  2. private String myProperty;

字符串

btxsgosb

btxsgosb3#

您可以将自己的条目添加到application.properties中。只要确保属性名称与http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties上列出的公共属性不冲突即可

pw136qt2

pw136qt24#

我也面临着同样的问题。因为所有的答案都是2015年的,我试图更新这个主题。
让我们假设,下面是application.yml中的自定义属性:

  1. custom:
  2. client: "http://localhost:4200"

字符串
你可能会得到警告
无法解析配置属性“custom.client”
要解决这个问题,您可能需要在 resources/META-INF 中创建文件 additional-spring-configuration-metadata.json。完成后,将以下内容添加到创建的文件中:

  1. {
  2. "properties": [
  3. {
  4. "name": "custom.client",
  5. "type": "java.lang.String",
  6. "description": "Client's URL."
  7. }
  8. ] }


警告应该消失了。

展开查看全部

相关问题