springboot 读取配置文件为HashMap

本文介绍了一种在Java中从配置文件读取属性并将其注入到List和Map类型的示例。通过使用Spring框架的@Configuration注解和@Value注解,可以将配置文件中的属性值转换为List集合,并进一步将List中的元素转换为Map集合,每个元素对应一个Model对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.配置文件样例:

abc.xxx.kk=zzz,yyyy

abc.zzz.aa=rrr

abc.zzz.bb=rrr

abc.zzz.cc=rrr

abc.yyy.aa=rr

abc.yyy.bb=rr

abc.yyy.cc=rr

2.java 代码:

@Configuration

public xxconfig{

@value("#{'${abc.xxx.kk}'.split(',').}")

public List<String> list;

 

@Bean

public  Map<String,model> xxxdefMap(){

Map<String,Model>  map=new ArrayList<>();

list.parallelStream().forEatch(){  xxx->(

Model  model = new Model();

model.set(xxx);

map.put(model);

)

};

return map;

}

}

 

3.调用

@Autiwon

private Map<String,Model>  xxxdefMap;

### 使用 Spring Boot 读取 Excel 文件并将其转换为树形结构 要完成此任务,可以借助 Apache POI 或 EasyExcel 来处理 Excel 数据,并通过自定义逻辑将数据解析为树形结构。以下是具体方法: #### 工具库的选择 Apache POI 是 Java 中广泛使用的工具包之一,用于操作 Microsoft Office 文档(如 Excel)。它提供了强大的功能来读写 `.xls` 和 `.xlsx` 文件[^1]。 另一种选择是 Alibaba 提供的 EasyExcel 库,该库专注于简化大文件的读写过程,性能优于 Apache POI,在大数据量场景下表现更佳[^2]。 #### 实现步骤概述 为了实现目标,需执行以下核心操作: 1. **依赖引入**:在项目中添加所需的 Maven/Gradle 依赖项。 2. **读取 Excel 数据**:利用所选库加载 Excel 并提取其中的数据。 3. **构建树形结构**:设计算法将平面化的表格数据映射到嵌套的对象模型上。 #### 添加依赖 如果选用 Apache POI,则应在 `pom.xml` 中加入如下配置: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> ``` 对于 EasyExcel,可采用下面这段代码片段作为替代方案: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency> ``` #### 示例代码展示 假设有一个简单的 Excel 表格存储节点信息,每行代表一个节点及其父级关系字段。这里给出基于 Apache POI 的解决方案示例: ```java import org.apache.poi.ss.usermodel.*; import java.io.FileInputStream; import java.util.*; public class ExcelToTreeConverter { public static void main(String[] args) throws Exception { String filePath = "path/to/excel/file.xlsx"; Workbook workbook = WorkbookFactory.create(new FileInputStream(filePath)); Sheet sheet = workbook.getSheetAt(0); List<Node> nodesList = new ArrayList<>(); for (Row row : sheet) { int id = (int)row.getCell(0).getNumericCellValue(); int parentId = (int)row.getCell(1).getNumericCellValue(); String name = row.getCell(2).getStringCellValue(); Node node = new Node(id, parentId, name); nodesList.add(node); } Map<Integer, Node> mapById = new HashMap<>(); for(Node n : nodesList){ mapById.put(n.getId(),n); } Node root = null; for(Node n : nodesList){ if(n.getParentId() != 0){ Node parent = mapById.get(n.getParentId()); if(parent!=null){ parent.getChildren().add(n); }else{ System.out.println("Parent not found"); } } else { root = n; // Assuming single root scenario. } } printNode(root," "); } private static void printNode(Node node,String indent){ System.out.println(indent + "- "+node.getName()+" ("+node.getId()+")"); for(Node child: node.getChildren()){ printNode(child,indent+" "); } } } class Node { private final Integer id; private final Integer parentId; private final String name; private final List<Node> children = new ArrayList<>(); public Node(Integer id,Integer parentId, String name){ this.id=id; this.parentId=parentId; this.name=name; } public Integer getId(){ return id; } public Integer getParentId(){ return parentId; } public String getName(){ return name; } public List<Node> getChildren(){ return Collections.unmodifiableList(children); } public void addChild(Node child){ children.add(child); } } ``` 上述程序实现了从指定路径加载 Excel 文件的功能,并按照父子关联建立起一棵完整的树状图表示法[^3]。 #### 注意事项 当面对复杂的业务需求时,可能还需要考虑额外的因素比如异常捕获机制、并发控制以及内存优化等问题。此外,实际开发过程中应遵循良好的编码习惯和测试策略以保障系统的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值