Spring Boot udostępnia mechanizm automatycznego wczytywania pliku konfiguracyjnego i stworzenie z nich obiektów.
Dla przykładu zostanie wykorzystana klasa Person do której zostaną załadowane dane. Oto prosty model klasy. Koniecznie musi on zawierać getery i setery do pól:
public class Person { private String name; private String surname; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person() { } @Override public String toString() { return "Person{" + "name=" + name + ", surname=" + surname + ", age=" + age + '}'; } }
W przykładzie zostanie utworzone kilka obiektów klasy Person.
W pierwszej kolejności musi zostać utworzona prawidłowa konfiguracja:
app.persons[0].name=Jon app.persons[0].surname=Blacksmith app.persons[0].age=33 app.persons[1].name=Lena app.persons[1].surname=Rain app.persons[1].age=22
Skład klucza jest następujący:
- Prefiks;
- Nazwa kolekcji w której umieszczane będą docelowe obiekty (w tym przykładzie obiekty klasy Person);
- Numer indeksu pod którym obiekt będzie znajdował się w kolekcji;
- Nazwa pola w klasie do której ma zostać wstrzyknięta wartość;
Posiadając model (klasa Person) i prawidło zbudowany plik konfiguracyjny można wstrzyknąć elementy do kolekcji.
Adnotacja @ConfigurationProperties zapewnia automatyczne wczytanie konfiguracji do klasy.
Należy pamiętać, że kolekcja musi mieć nazwę taką samą jaka została uwzględniona w pliku konfiguracyjnym. Obowiązkowe są również getery i setery do pól.
@RestController @ConfigurationProperties("app") public class PersonReader { private List<Person> persons = new ArrayList<>(); public List<Person> getPersons() { return persons; } public void setPersons(List<Person> persons) { this.persons = persons; } @RequestMapping("/showPersons") public List<Person> showPersons() { return persons; } }
Rezultat:
W kolejnej części opisany zostanie sposób wykorzystania mechanizmu filtrowania.