In the last example, we saw maven resource filtering in boot application. Spring also provides it's own variable substitution in property files. We just need to use ${someProp} in property file and start the application having 'someProp' in system properties or as main class (or jar) argument '--someProp=theValue'.
This feature allows us to use 'short' command line arguments.
Example
src/main/resources/application.properties
app.title=Boot ${app} @project.artifactId@
Note that, in above example, we are also using maven variables @..@ (last tutorial).
@SpringBootConfiguration
public class ExampleMain {
@Bean
MyBean myBean() {
return new MyBean();
}
public static void main(String[] args) throws InterruptedException {
SpringApplication bootApp = new SpringApplication(ExampleMain.class);
bootApp.setBannerMode(Banner.Mode.OFF);
bootApp.setLogStartupInfo(false);
ConfigurableApplicationContext context = bootApp.run(args);
MyBean myBean = context.getBean(MyBean.class);
myBean.doSomething();
}
private static class MyBean {
@Value("${app.title}")
private String appTitle;
public void doSomething() {
System.out.printf("App title : %s%n", appTitle);
}
}
}
mvn spring-boot:run -Dapp=Example
Output
d:\example-projects\spring-boot\place-holders-in-properties>mvn spring-boot:run -Dapp=Example App title : Boot Example place-holders-in-properties
Example Project
Dependencies and Technologies Used:
Spring Boot 1.5.4.RELEASE Corresponding Spring Version 4.3.9.RELEASE
spring-boot-starter : Core starter, including auto-configuration support, logging and YAML.