Reading Configuration Files in Spring Boot
Spring Boot Configuration Files
Spring Boot supports two types of configuration files: core configuration files and custom configuration files. Core configurasion files are typically named application.properties or application.yml and reside in the resources directory. To maintain the integrity of core files while adding custom configurations, developers often create separate custom configuration files. For example, you can create config.properties in the resources/config directory.
Reading Core Configuration Files
Consider the following YAML configuration:
server:
port: 8081
servlet:
context-path: /boot
application:
title: demo-service
Method 1: Using @Value Annotation
@RestController
public class DemoController {
@Value("${application.title}")
private String appTitle;
@GetMapping("/info")
public String getInfo() {
return "Application title: " + appTitle;
}
}
Method 2: Using Environment Interface
@RestController
public class DemoController {
@Autowired
private Environment environment;
@GetMapping("/info")
public String getInfo() {
return "Application title: " + environment.getProperty("application.title");
}
}
Reading Custom Configuration Files
Custom configuration file config.properties content:
build.version=2.0.0
build.artifact=spring-app
Create a configuration class with property mapping:
@Component
@ConfigurationProperties(prefix = "build")
@PropertySource("classpath:config/config.properties")
public class BuildConfig {
private String version;
private String artifact;
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getArtifact() {
return artifact;
}
public void setArtifact(String artifact) {
this.artifact = artifact;
}
}
Using the custom configuration in a controller:
@RestController
public class DemoController {
@Autowired
private BuildConfig buildConfig;
@GetMapping("/build")
public String getBuildInfo() {
return "Version: " + buildConfig.getVersion() +
", Artifact: " + buildConfig.getArtifact();
}
}