配置文件如下:
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); } }