c语言编程笔录

首页 >   > 笔记大全

笔记大全

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 List list;
    //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 List fruitList;
    
    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>()?{});
        return?fruitMap;
    }
}

读取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文件中数据的处理。