springboot怎么读取yml文件中的list列表数组map集合和对象
更新时间:2023-12-22读取yml文件中的list列表
读取yml文件中的list列表可以使用Spring Boot提供的@ConfigurationProperties注解和@Value注解。使用@ConfigurationProperties注解可以将yml文件中的列表映射到一个JavaBean中,并通过@Autowired注入到其他类中使用。使用@Value注解可以将yml文件中的列表值注入到一个String类型的变量中,通过split方法将其转化成list。
//application.yml文件中 fruit: list: apple,banana,orange //使用@ConfigurationProperties注解 @Configuration @ConfigurationProperties(prefix = "fruit") public class FruitConfig { private Listlist; //getter和setter方法 } //其他类中注入该类使用 @Service public class FruitService { @Autowired private FruitConfig fruitConfig; public List getFruitList() { return fruitConfig.getList(); } } //使用@Value注解 @Service public class FruitService { @Value("#{'${fruit.list}'.split(',')}") private List fruitList; public List getFruitList() { return fruitList; } }
读取yml文件中的数组
读取yml文件中的数组可以使用Spring Boot提供的@Value注解和yaml-beans库。使用@Value注解可以读取yml中的数组,然后使用yaml-beans库将其转化成Java中的数组类型。
//application.yml文件中 fruit: array: - apple - banana - orange //使用@Value注解 @Service public class FruitService { @Value("#{'${fruit.array}'.split(',')}") private String[] fruitArray; public String[] getFruitArray() { return fruitArray; } } //使用yaml-beans库 @Service public class FruitService { @Value("${fruit.array}") private ListfruitList; public String[] getFruitArray() { String[] fruitArray = new String[fruitList.size()]; for (int i = 0; i < fruitList.size(); i++) { fruitArray[i] = fruitList.get(i); } return fruitArray; } }
读取yml文件中的map集合
读取yml文件中的map集合可以使用Spring Boot提供的@ConfigurationProperties注解和@Value注解。使用@ConfigurationProperties注解可以将yml文件中的map映射到一个JavaBean中,并通过@Autowired注入到其他类中使用。使用@Value注解可以将yml文件中的map值注入到一个String类型的变量中,通过解析成JSON字符串并使用Jackson库转化成Map类型来实现。
//application.yml文件中 fruit: map: apple: red banana: yellow orange: orange //使用@ConfigurationProperties注解 @Configuration @ConfigurationProperties(prefix = "fruit") public class FruitConfig { private Map<String, String> map; //getter和setter方法 } //其他类中注入该类使用 @Service public?class?FruitService?{ @Autowired FruitConfig?fruitConfig; public?Map?getFruitMap()?{ return?fruitConfig.getMap(); } } //使用@Value注解 @Service public?class?FruitService?{ @Value("#{${fruit.map}}") private?Map ?fruitMap; public?Map ?getFruitMap()?{ return?fruitMap; } } //使用Jackson库 @Service public?class?FruitService?{ @Value("#{'${fruit.map}'.replaceAll('''', '\"')}") private?String?fruitMapStr; public?Map ?getFruitMap() throws?IOException?{ ObjectMapper?mapper?=?new?ObjectMapper(); Map ?fruitMap?=?mapper.readValue(fruitMapStr,?new?TypeReference
读取yml文件中的对象
读取yml文件中的对象可以使用Spring Boot提供的@ConfigurationProperties注解。使用@ConfigurationProperties注解可以将yml文件中的对象映射到一个JavaBean中,并通过@Autowired注入到其他类中使用。
//application.yml文件中 fruit: object: name: apple color: red //使用@ConfigurationProperties注解 @Configuration @ConfigurationProperties(prefix = "fruit") public class FruitConfig { private Fruit object; //getter和setter方法 public static class Fruit { private String name; private String color; //getter和setter方法 } } //其他类中注入该类使用 @Service public class FruitService { @Autowired private FruitConfig fruitConfig; public FruitConfig.Fruit getFruitObject() { return fruitConfig.getObject(); } }总结:以上是几种读取yml文件中不同类型数据的方法,可以依据具体需求选择合适的方法。使用Spring Boot提供的@ConfigurationProperties注解可以实现复杂数据类型的映射,使用@Value注解可以读取简单数据类型的值。同时,使用第三方库如yaml-beans和Jackson也可以实现对yml文件中数据的处理。