在使用之前为应用程序属性中的参数赋值

时间:2017-11-15 05:33:40

标签: spring-boot application.properties

我在SpringBoot项目的application.properties文件中有一个属性 -

app.module.service.url=http://localhost:8090/{DOCID}

我已将其注入我的Java文件中,如下所示 -

@Value("${app.module.service.url}")
private String url;

现在我需要用我的函数中的某个值替换DOCID(即动态)。我如何做到这一点,还是我完全错过了? 我知道我们可以在Spring中message properties的情况下执行此操作。但在这里我与Locales没有任何关系。

修改

在我的Java实现中使用它时,我需要使用一些值代替{DOCID}

...
public class Sample{

@Value("${app.module.service.url}")
private String url;

public void sampleFunc(){

String str = "random Value" //some dynamic value goes in here
...

现在,我需要将{DOCID}替换为str

中的url

3 个答案:

答案 0 :(得分:1)

Spring Properties中无法进行双向绑定。它只能读取运行时和环境变量。

请参阅以下链接以获取更多信息。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding

答案 1 :(得分:1)

您可以为此使用 spring UriTemplate。

在您的实现类中:

...
public class Sample{

@Value("${app.module.service.url}")
private String url;

public void sampleFunc(){
 String dockId = someValue; // customize according to your need
 UriTemplate uriTemplate = new UriTemplate(url);
 URI uri = uriTemplate.expand(docId);
 new RestTemplate().postForEntity(uri, requestObhect, Responseclass.class);
}
...

更多信息,您可以参考: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/UriTemplate.html

答案 2 :(得分:0)

试试这样...

app.module.service.url=http://localhost:8090/{{docId}}

并设置运行配置如下

-DdocId = 133323 // any number which you want