目前正在学习Java,想把一些学习过程中的点点滴滴记录下来,一个原因是方便自己以后使用,另一个原因是巩固一下自己的学习成果和大家分享!!

下面我把我做过的一个配置文件信息映射至Controller层的案例分享给大家

第一种方式:

1、在创建springboot项目工程后,在项目的resource文件夹下创建pay.properties测试文件夹

springboot 配置文件 映射成map springboot字段映射_配置文件

2、在pay.properties加入以下代码(这是我自己随便写的,你们也可以改成别的参数和值)

#微信支付的唯一ID
wxpay.payid=1001
wxpay.sercret=1213213
#微信支付商户秘钥
wxpay.mechid=32423

3、创建测试类的Controller

 //使用@PropertySource注解,获取到pay.properties定义好的配置文件信息

//使用@Value注解为字段赋值

@RestController
@RequestMapping("api/v1/test")
@PropertySource({"classpath:pay.properties"})//使用@PropertySource注解,获取到定义好的配置文件信息
public class testController {

    @Value("${wxpay.payid}")//使用Value注解为字段赋值
    private String payid;

    @Value("${wxpay.sercret}")
    private String sercret;

    @Value("${wxpay.mechid}")
    private String mechid;

    //测试获取配置文件信息
    @GetMapping("get_wxPay")
    public JsonData wxPay() {
        Map<String, String> payMap = new HashMap<>();
        payMap.put("payid", payid);
        payMap.put("mechid", mechid);
        payMap.put("sercret", sercret);
        return JsonData.buildSuccess(payMap);
    }

}

4、测试

成功获取到pay.properties中的信息(注意:访问时一定不要把自己的地址写错哦!!)

springboot 配置文件 映射成map springboot字段映射_java_02

第二种方式:

1、在config文件夹下创建实体类wxPayConfig(没有config的话新建一个也可以)

springboot 配置文件 映射成map springboot字段映射_测试类_03

2、在wxPayConfig中映射配置文件信息(注意:一定要加@Configuration@PropertySource这两个注解,并写对文件名称value="classpath:pay.properties"

@Configuration
@PropertySource(value="classpath:pay.properties")//获取到定义好的配置文件信息
public class wxPayConfig {

    @Value("${wxpay.payid}")//映射字段信息
    private String payid;

    @Value("${wxpay.sercret}")
    private String sercret;

    @Value("${wxpay.mechid}")
    private String mechid;

    //set AND get

3、创建测试类的Controller

      在测试类中引入第二步创建的wxPayConfig配置类,使用配置类来get调用里面的信息

@RestController
@RequestMapping("api/v1/test")
@PropertySource({"classpath:pay.properties"})
public class testController {

    @Autowired
    private wxPayConfig wxPayConfig;//引入wxPayConfig实体类

    //测试获取配置文件信息
    @GetMapping("get_wxPay")
    public JsonData wxPay() {
        Map<String, String> payMap = new HashMap<>();
        //通过wxPayConfig实体类来获取到pay.properties中定义的信息
        payMap.put("payid", wxPayConfig.getPayid());
        payMap.put("mechid", wxPayConfig.getMechid());
        payMap.put("sercret", wxPayConfig.getSercret());
        return JsonData.buildSuccess(payMap);
    }

}

4、再次测试显示信息就和上面的一样啦

5、推荐大家使用第二种方法 

常见问题:

1 、配置⽂件注⼊失败, Could not resolve placeholder

解决:根据 springboot 启动流程,会有⾃动扫描包没有扫描到相关注解 ,

默认 Spring 框架实现会从声明 @ComponentScan 所在的类的 package 进⾏扫描,来⾃动注⼊,

因此启动类最好放在根路径下⾯,或者指定扫描包范围

spring-boot 扫描启动类对应的⽬录和⼦⽬录

2 、注⼊ bean 的⽅式,属性名称和配置⽂件⾥⾯的 key ⼀⼀对应,就⽤加 @Value 这个注解

如果不⼀样,就要加 @value("${XXX}")