java—在spring中根据环境变量填充pojo的值

nvbavucw  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(217)

我有一个类,在其中Map应用程序文件中定义的属性。但是,如果定义了像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

所以在上面的例子中,如果环境变量enabled设置为true,我想从系统中已经存在的环境变量中提取class&floor。环境变量将是102层、102层、70层、70层。因此,对于lisa,需要填充102\u class和102\u floor variables值。

vtwuwzda

vtwuwzda1#

你可以用 Environment 对于这种情况,可以在类中注入bean,该类将具有以下逻辑

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变量的文本值,如果您还想使用属性中的floor和class值,那么您可以在循环中连接它,而不是floor/class
逻辑功能只是给你一个想法,你可以用你的逻辑

相关问题