#java #spring #spring-boot
Вопрос:
У меня есть класс, в котором я сопоставляю свойства, определенные в файле приложения. Однако, если определена переменная среды, подобная enabled, я хочу установить для двух полей значение по умолчанию, определенное в других переменных среды. Как я могу это сделать? Заранее спасибо за вашу помощь.
Вот мой класс:
@ConfigurationProperties(prefix = "school.students")
@Data
public class SchoolStudents {
private List<Details> details;
@Data
public static class Details {
private String name;
private String class;
private String floor;
private int rollNo;|
}
}
Вот мое заявление.yaml:
school:
student:
details:
- name: Aaraon
class: Sixth
floor: First
rollNo: 70
- name: Lisa
class: Third
floor: Second
rollNo: 102
Поэтому в приведенном выше случае, если для переменной среды включено значение true, я хочу выбрать класс и этаж из переменных среды, уже присутствующих в системе. Переменные среды будут 102_floor,102_class,70_floor,70_class. Поэтому для Lisa необходимо заполнить значения переменных 102_class и 102_floor.
Комментарии:
1. Почему вы не используете файл приложения env для переопределения значений в файле приложения по умолчанию?
2. можете ли вы привести мне пример этого
3. Как выглядит ваш файл заявки?
Ответ №1:
Вы можете использовать Environment
боб для этого случая, поэтому вы можете ввести боб в свой класс, который будет иметь такую логику
public class SomeServiceOrLogicClass {
@Autowired
private Environment env;
@Autowired
private SchoolStudents students;
public void someLogicFunction() {
schoolStudents.forEach(student -> {
for(Detail d : student.getDetails()) {
System.out.println(env.getProperty(d.getRollNo() "_floor"));
// Similar for class thing
}
})
}
}
Обратите внимание, что я использовал буквальное значение переменной env, как вы вставили в свой вопрос, если вы также хотите использовать значение этажа и класса из свойств, то вы можете просто объединить это вместо пола/класса в цикле
Функция логики состоит в том, чтобы просто дать вам представление, вы можете использовать свою логику
Комментарии:
1. Переменная окружения будет чем-то вроде {rollNo}_floor, поэтому я должен извлечь ее на основе значения » нет » в файле свойств приложения.
2. Я вас не понял, что такое env в вашем случае использования? является ли roll не средой или это ценность? Пожалуйста, добавьте больше информации к вашему вопросу.
3. На самом деле для пола и класса могут быть разные переменные среды. Таким образом, к каждому из них будет приложен номер броска. Например, это будет rollNo11_floor, rollNo12_floor и так далее. Мне нужно извлечь переменную env на основе rollNo, указанного в файле свойств приложения.
4. Я все еще не понимаю, что вы пытаетесь сделать, пожалуйста, обновите свой вопрос примерами и объяснением варианта использования.
5. Отредактировал вопрос,дайте мне знать, если потребуется более подробная информация.