springboot读取配置文件中的内容转为实体类包含list和map

pom文件

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.9</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

启动类

@SpringBootApplication
@ConfigurationPropertiesScan(value = {"com.example.springbootdemo.config"})
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}

@ConfigurationPropertiesScan 标注配置类所在包
配置类

package com.example.springbootdemo.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
import java.util.Map;

@ConfigurationProperties(prefix = "global.config")
@Data
public class ApplicationConfig {
    private String demoMes;
    private Integer demoVersion;
    private List<String> demoList;
    private Map<String, String> demoMap;
    private Map<String, List<String>> demoMap2;
    private Map<String, Map<String, String>> demoMap3;
}

配置文件

global:
  config:
    demo-mes: String
    demo-version: 1
    demo-list:
      - 1
      - 2
    demo-map:
      user: tom
      age: 18
    demo-map2:
      addr:
        - 上海
        - 广州
    demo-map3:
      name:
        age: 18
        addr: 北京
    demoMap4:
      - name: zhangsan
      - age: 18

注意配置文件key要与配置类的变量名称相对应

测试类

@SpringBootTest
@RunWith(SpringRunner.class)
class SpringbootdemoApplicationTests {

    @Autowired
    private ApplicationConfig config;

    @Test
    public void contextLoads() {
        // List
        List<String> demoList = config.getDemoList();
        System.out.println("DemoList: " + demoList);

        // Map<String, String>
        Map<String, String> demoMap = config.getDemoMap();
        for (Map.Entry<String, String> entry : demoMap.entrySet()) {
            System.out.println("demoMap: " + entry.getKey() + " " + entry.getValue());

        }

        // Map<String, List<String>>
        Map<String, List<String>> demoMap2 = config.getDemoMap2();
        for (Map.Entry<String, List<String>> entry : demoMap2.entrySet()) {
            System.out.println("demoMap2:" + entry.getValue());
        }

        // Map<String, Map<String, String>>
        Map<String, Map<String, String>> demoMap3 = config.getDemoMap3();
        for (Map.Entry<String, Map<String, String>> entry : demoMap3.entrySet()) {
            for (Map.Entry<String, String> stringEntry : entry.getValue().entrySet()) {
                System.out.println("demoMap3:" + stringEntry.getKey() + " " + stringEntry.getValue());
            }
        }

        // List<Map<String, String>>
        List<Map<String, String>> demoMap4 = config.getDemoMap4();
        for (Map<String, String> map : demoMap4) {
            for (Map.Entry<String, String> entry : map.entrySet()) {
                System.out.println("demoMap4:" + entry.getKey() + " " + entry.getValue());
            }
        }
      
        // String
        System.out.println("DemoMes: " + config.getDemoMes());

        // Integer
        System.out.println("DemoVersion: " + config.getDemoVersion());
    }
}

测试类输出:

List
DemoList: [1, 2]

Map<String, String>
demoMap: user tom
demoMap: age 18

Map<String, List<String>>
demoMap2:[上海, 广州]

Map<String, Map<String, String>>
demoMap3:age 18
demoMap3:addr 北京

List<Map<String, String>>
demoMap4:name zhangsan
demoMap4:age 18

String
DemoMes: String

Integer
DemoVersion: 1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用easyexcel提供的监听器,基于SAX解析方式读取excel文件并将数据插入数据库,无需使用实体类。以下是一个简单的例子: 首先,定义一个监听器类,继承自AnalysisEventListener: ``` public class ExcelListener extends AnalysisEventListener<Map<Integer, String>> { private List<Map<Integer, String>> dataList = new ArrayList<>(); @Override public void invoke(Map<Integer, String> rowData, AnalysisContext context) { // 将每行数据存入List dataList.add(rowData); // 每1000条数据执行一次插入操作 if (dataList.size() >= 1000) { saveData(); dataList.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 最后不足1000条的数据也要插入 if (!dataList.isEmpty()) { saveData(); dataList.clear(); } } private void saveData() { // 执行插入操作,将List的数据插入数据库 } } ``` 然后,在代码使用如下方式读取并解析excel文件: ``` InputStream inputStream = new FileInputStream("path/to/excel/file.xlsx"); ExcelListener listener = new ExcelListener(); ExcelReader excelReader = new ExcelReader(inputStream, null, listener); excelReader.read(); ``` 在读取excel文件时,需要传入一个InputStream对象,以及一个实现了AnalysisEventListener接口的监听器对象。在监听器的invoke方法,每次解析到一行数据时,将其存入List。当List的数据达到一定数量时,执行一次插入操作。在doAfterAllAnalysed方法,最后不足1000条的数据也要插入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值