zoukankan      html  css  js  c++  java
  • Springboot读取自定义的yml文件中的List对象

    Yml文件(novellist.xml)如下:

    novellist:
      list:
        - name: 笑傲江湖
          type: 武侠
          master: 令狐冲
          author: 金庸
          description: 小说以通过叙述华山派大弟子令狐冲的经历,反映了武林各派争霸夺权的历程。
        - name: 诛仙
          type: 仙侠
          master: 张小凡
          author: 萧鼎
          description: 该小说以“天地不仁,以万物为刍狗”为主题,讲述了青云山下的普通少年张小凡的成长经历以及与两位奇女子凄美的爱情故事,整部小说构思巧妙、气势恢宏,开启了一个独具魅力的东方仙侠传奇架空世界,情节跌宕起伏,人物性格鲜明,将爱情、亲情、友情与波澜壮阔的正邪搏斗、命运交战汇集在一起,文笔优美,故事生动。
        - name: 英雄志
          type: 武侠
          master: 观海云远
          author: 孙晓
          description: 《英雄志》为一虚构中国明朝历史的古典小说,借用明英宗土木堡之变为背景,以复辟为舞台,写尽了英雄们与时代间的相互激荡,造反与政变、背叛与殉道

    将List对象转化为List<Map<String, String>>或者List<Novel>,其中prefix中的novelist必须小写,否则报错:

    @Component
    @ConfigurationProperties(prefix = "novellist")
    public class NovelList {

        private List<Map<String, String>> list;

        public List<Map<String, String>> getList() {
            return list;
        }

        public void setList(List<Map<String, String>> list) {
            this.list = list;
        }

        @Override
        public String toString() {
            return "NovelList{" +
                    "list=" + list +
                    '}';
        }
    }

    将yml中的内容放入,application.yml文件中正常,自定义novellist.yml文件中无法找到。使用@ConfigurationProperties注解,只能用于properties文件。

    解决方式:可以通过PropertySourcePlaceholderConfigurer来加载yml文件,暴露yml文件到spring environment,如下:

    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(new ClassPathResource("novellist.yml"));
        configurer.setProperties(yaml.getObject());
        return configurer;
    }

  • 相关阅读:
    Android之针对WebView的全屏播放
    Android之Android WebView常见问题及解决方案汇总
    android之针对fragment多次调用onCreateView的问题
    Android之在string.xml配置文字颜色粗体等效果
    ios成长之每日一遍(day 8)
    Android之TextView灵活使用
    ubuntu忘记root密码 的解决方法
    Mono Touch Table应用
    判断checkbox选中的个数
    C指针原理(14)
  • 原文地址:https://www.cnblogs.com/gujianzhe/p/10092300.html
Copyright © 2011-2022 走看看