BAEL-6229: loading multiple yaml files in spring boot (#13724)
* BAEL-6229: committing new example for loading multiple yaml configuration files * BAEL-6229: updating README.md * BAEL-6229: adding example one code, commented out * Revert "BAEL-6229: updating README.md" This reverts commit 51cd2dcf97f797aa6a723888fd246ef0142242a3. * BAEL-6229: adding comments around commented out code for first example.
This commit is contained in:
parent
6904c81c12
commit
0ac00ad389
|
@ -0,0 +1,27 @@
|
||||||
|
package com.baeldung.properties.multipleyaml;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class MultipleYamlApplication implements CommandLineRunner {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MultipleYamlConfiguration config;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication springApp = new SpringApplication(MultipleYamlApplication.class);
|
||||||
|
|
||||||
|
// Code from first example, uncomment to use multiple profiles
|
||||||
|
// springApp.setAdditionalProfiles("students", "teachers");
|
||||||
|
|
||||||
|
springApp.run(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run(String... args) throws Exception {
|
||||||
|
System.out.println("Students: " + config.getStudents());
|
||||||
|
System.out.println("Teachers: " + config.getTeachers());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.baeldung.properties.multipleyaml;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.PropertySource;
|
||||||
|
import org.springframework.context.annotation.PropertySources;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@ConfigurationProperties
|
||||||
|
@PropertySources({
|
||||||
|
@PropertySource(value = "classpath:application-teachers.yml", factory = MultipleYamlPropertySourceFactory.class),
|
||||||
|
@PropertySource(value = "classpath:application-students.yml", factory = MultipleYamlPropertySourceFactory.class)})
|
||||||
|
public class MultipleYamlConfiguration {
|
||||||
|
|
||||||
|
List<String> teachers;
|
||||||
|
List<String> students;
|
||||||
|
|
||||||
|
public void setTeachers(List<String> teachers) {
|
||||||
|
this.teachers = teachers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStudents(List<String> students) {
|
||||||
|
this.students = students;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getTeachers() {
|
||||||
|
return teachers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getStudents() {
|
||||||
|
return students;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.baeldung.properties.multipleyaml;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
|
||||||
|
import org.springframework.core.env.PropertiesPropertySource;
|
||||||
|
import org.springframework.core.env.PropertySource;
|
||||||
|
import org.springframework.core.io.support.EncodedResource;
|
||||||
|
import org.springframework.core.io.support.PropertySourceFactory;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
public class MultipleYamlPropertySourceFactory implements PropertySourceFactory {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) throws IOException {
|
||||||
|
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
|
||||||
|
factory.setResources(encodedResource.getResource());
|
||||||
|
|
||||||
|
Properties properties = factory.getObject();
|
||||||
|
|
||||||
|
return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
students:
|
||||||
|
- Jane
|
||||||
|
- Michael
|
|
@ -0,0 +1,3 @@
|
||||||
|
teachers:
|
||||||
|
- Margo
|
||||||
|
- Javier
|
|
@ -2,6 +2,10 @@ bael:
|
||||||
root-level-property: defaultRootLevelValue
|
root-level-property: defaultRootLevelValue
|
||||||
spring:
|
spring:
|
||||||
profiles:
|
profiles:
|
||||||
|
# Multiple profiles for MultipleYamlApplication first example
|
||||||
|
# include:
|
||||||
|
# - teachers
|
||||||
|
# - students
|
||||||
group:
|
group:
|
||||||
multidocument-integration: multidocument-integration-extension
|
multidocument-integration: multidocument-integration-extension
|
||||||
---
|
---
|
||||||
|
|
Loading…
Reference in New Issue