springboot讀取配置文件中的集合對象

配置文件如下:

epic-category.properties

static-epic-categories[0].static-epic-category-value.id=1
static-epic-categories[0].static-epic-category-value.key=BUSINESS
static-epic-categories[0].static-epic-category-value.name=業務類專題
static-epic-categories[0].sub-categories[0].id=2
static-epic-categories[0].sub-categories[0].key=SPORADIC_OPTIMIZATION_BUSINESS
static-epic-categories[0].sub-categories[0].name=零星優化類(業務類)
static-epic-categories[0].sub-categories[1].id=3
static-epic-categories[0].sub-categories[1].key=SOLUTION_BUSINESS
static-epic-categories[0].sub-categories[1].name=解決方案類(業務類)
static-epic-categories[1].static-epic-category-value.id=4
static-epic-categories[1].static-epic-category-value.key=TECH
static-epic-categories[1].static-epic-category-value.name=技術類專題
static-epic-categories[1].sub-categories[0].id=5
static-epic-categories[1].sub-categories[0].key=SPORADIC_OPTIMIZATION_TECH
static-epic-categories[1].sub-categories[0].name=零星優化類(技術類)
static-epic-categories[1].sub-categories[1].id=6
static-epic-categories[1].sub-categories[1].key=SOLUTION_TECH
static-epic-categories[1].sub-categories[1].name=解決方案類(技術類)

不難看出,配置文件中是多個對象集合,我們只有要建立對應的類進行讀取即可。

1.創建對應的實體類,建立映射並讀取配置配置文件中的信息,使用時通過@Autowired註解注入即可

import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * <p>
 *  讀取epic-category.properties配置文件中的類型信息
 * </p>
 *
 * @className EpicCategory
 * @author Sue
 * @create 2020/9/30 
 **/
@Data
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "")
//不使用這個註解默認讀取application.yml
@PropertySource(value = "classpath:epic-category.properties")
public class EpicCategory {

    private List<StaticEpicCategories> staticEpicCategories;

    @Data
    static class StaticEpicCategories {
        private StaticEpicCategoryValue staticEpicCategoryValue;
        private List<SubCategories> subCategories;
    }

    @Data
    static class StaticEpicCategoryValue {
        private String id;
        private String key;
        private String name;
    }

    @Data
    static class SubCategories {
        private String id;
        private String key;
        private String name;
    }


}

2.測試

@RunWith(SpringRunner.class)
@SpringBootTest
public class LeanManageApplicationTests {

    @Autowired
    EpicCategory epicCategory;
    @Autowired
    FeatureCategory featureCategory;

    @Test
    public void contextLoads() {
        System.out.println(epicCategory);
        System.out.println(featureCategory);
    }
}

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章