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

Spring boot-Application.properties中的自定义变量,spring,spring-mvc,spring-boot,spring-data,Spring,Spring Mvc,Spring Boot,Spring Data,我有一个使用restful api的spring引导客户机。除了在java类中硬编码RESTAPI的IP地址外,application.properties中是否有我可以使用的密钥条目 如果没有,我可以创建一个自定义条目吗 谢谢您可以将自己的条目添加到application.properties。只需确保属性名称不会与中列出的常见属性冲突,而不是将IP硬编码到属性文件中,您可以使用 -Dmy.property=127.127.10.20 而且弹簧靴会自动用 @Value("${my.proper

我有一个使用restful api的spring引导客户机。除了在java类中硬编码RESTAPI的IP地址外,application.properties中是否有我可以使用的密钥条目

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


谢谢

您可以将自己的条目添加到application.properties。只需确保属性名称不会与

中列出的常见属性冲突,而不是将IP硬编码到属性文件中,您可以使用

-Dmy.property=127.127.10.20

而且弹簧靴会自动用

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

Spring Boot使用的基础设施可以以完全相同的方式在您自己的项目中使用。您在@zmitrok answer中评论了“未知属性”警告。这是因为您的属性没有元数据,所以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
}
那么你有两个选择

  • @Component
    放在
    FooProperties
    上,并通过在任何
    @configuration
    类上添加
    @EnableConfigurationProperties
    来启用配置属性的处理(从Spring Boot
    1.3.0.M3
    开始,这最后一步不再是必需的)
  • 保持
    FooProperties
    不变,并将
    @EnableConfigurationProperties(FooProperties.class)
    添加到任何
    @Configuration
    类中,该类将自动为您创建Springbean 完成后,
    app.foo.ip
    可以在
    application.properties
    中使用,您可以在代码中
    @Autowired
    fooperties
    查找属性值

    @Component
    public MyRestClient {
    
        private final FooProperties fooProperties;
    
        @Autowired
        public MyRestClient(FooProperties fooProperties) { ... }
    
        public callFoo() {
           String ip = this.fooProperties.getIp();
           ...
        }
    
    }
    
    好的,所以你的钥匙在IDE中仍然是黄色的。最后一个步骤是。将以下内容添加到pom.xml中

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    
    
    org.springframework.boot
    
    还有更多细节。

    我明白了,但当我输入
    restAPIServiceAddress
    作为一个条目时,它会在它下面加上黄色下划线,并说“是一个未知的属性”,可以吗?我刚刚添加了一个答案,解释了黄色的含义。我在哪里添加
    -Dmy.property
    ?您使用哪个IDE?如果它是Eclipse:如果您是从命令行运行的,只需将它添加到endah ok谢谢,这个-Dmy.property可以添加到
    java-jar我的应用程序的末尾。war
    ?我认为这是goWow的方法对此一无所知(也许我应该开始阅读更多文档),这有很大帮助,谢谢。我遵循了这些步骤(选择上面的选项1),但是Spring工具套件仍然在
    application.properties
    文件中将我的属性标记为未知。有一个快速修复程序可用于创建应用程序元数据,但我假设
    spring引导配置处理器
    可以解决这个问题?您必须询问STS团队。我只知道它应该是开箱即用的。我们没有太多需要调查的内容,请创建另一个包含更多细节的线程。@StephaneNicoll:这是我刚刚发现的一个非常棒的功能,我要感谢您和团队其他成员为spring boot所做的所有工作,继续做好工作;)我不能说这是正确和最好的方法,但是仅仅使用@zmitrok也很好。不要理会黄色警告