springboot 载入自定义的yml文件转DTO

本文介绍了如何在SpringBoot应用中使用YamlMapFactoryBean从my-data.yml配置文件加载数据,并通过名称自动注入到MyDataCfg对象中,展示了JSON解析和依赖管理的过程。

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

改进方法,直接spring注入

import cn.hutool.json.JSONUtil;
import org.springframework.beans.factory.config.YamlMapFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

import java.util.Map;

@Configuration
public class MyDataYml {

    @Bean
    public MyDataCfg myData(){
        YamlMapFactoryBean yml = new YamlMapFactoryBean();
        yml.setResources(new ClassPathResource("my-data.yml"));
        Map<String, Object> map = yml.getObject();
        MyDataCfg project = JSONUtil.parse(map.get("project")).toBean(MyDataCfg.class);
        return project;
    }
    
}

调用

    @Autowired
    private MyDataCfg myData;

json解析的pom引入

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-json</artifactId>
            <version>5.8.20</version>
        </dependency>

resources目录下的my-data.yml

project:
  data:
    - name:  service-gen
      base-package:  com.my.test
      local-java-path:  D:\idea_workspace_mygitee\code-gen\mapstruct-mybatis-plus\java-code-gen\src\main\java
    - name:  service-gen2
      base-package:  com.my.test
      local-java-path:  D:\idea_workspace_mygitee\code-gen\mapstruct-mybatis-plus\java-code-gen\src\main\java
    - name:  service-gen3
      base-package:  com.my.test
      local-java-path:  D:\idea_workspace_mygitee\code-gen\mapstruct-mybatis-plus\java-code-gen\src\main\java

载入yml的配置类


import org.springframework.beans.factory.config.YamlMapFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

@Configuration
public class MyDataYml {

    @Bean
    public YamlMapFactoryBean myData(){
        YamlMapFactoryBean yml = new YamlMapFactoryBean();
        yml.setResources(new ClassPathResource("my-data.yml"));
        return yml;
    }
}

接受数据DTO

@Data
public class MyDataCfg {

   private   List<MyDataDTO> data;
}
import cn.hutool.core.annotation.Alias;
import lombok.Data;

@Data
public class MyDataDTO {
    @Alias("name")
    private String name;
    @Alias("base-package")
    private String basePackage;
    @Alias("local-java-path")
    private String localJavaPath;
}

调用

spring通过名字注入

import cn.hutool.json.JSONUtil;
import javax.annotation.Resource;
import java.util.Properties;

    @Resource(name = "myData")
    private Properties p;

MyDataCfg project = JSONUtil.parse(p.get("project")).toBean(MyDataCfg.class);

断点结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值