springboot中配置文件的加载和读取

今天总结一下springboot中常用的配置文件加载和使用,后续的章节里会一一的把相关功能做总结,以便自己日后使用!废话不多说了,先创建一个springboot项目,这个就不用多说了!

说到这个配置文件的加载和读取,有两个重要的注解有必要了解一下,@ConfigurationProperties和@PropertySource,在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties注解,我们可以方便的获取这些参数值。@PropertySource注解加载指定的配置文件。

@ConfigurationProperties的基本用法非常简单:我们为每个要捕获的外部属性提供一个带有字段的类。请注意以下几点:1.前缀定义了哪些外部属性将绑定到类的字段上2.根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配3.我们可以简单地用一个值初始化一个字段来定义一个默认值4.类本身可以是包私有的5.类的字段必须有公共 setter 方法。

第一,source文件的编写

com.bw.auto.name=自动化
com.bw.auto.number=5

第二,pom文件中引入相关jar的配置

 <!--导入配置文件处理器,在编写配置文件时就会提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

     第三,Resource核心类的编写

package com.bw.auto.resource;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@ConfigurationProperties(prefix="com.bw.auto")
@PropertySource(value = "classpath:resource.properties")
@Data
public class Resource {
    private String name;
    private String number;
}

     第四,测试control的编写

package com.bw.auto.modules.web;

import com.bw.auto.common.until.JsonUtils;
import com.bw.auto.resource.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HellowTest {
    @Autowired
    private Resource resource;
    
    @RequestMapping("/getResource")
    public String getResource(){
        return "======"+JsonUtils.objectToJsonStr(resource);
    }
}

其实到这里就可以,我们启动一下项目,看一下效果

至此一个简单的获取文件方法就完成了,这个中间大家注意下,实体类中并没有get和set方法,是不是很神奇啊?那是因为@Data注解的功能。好了不多说了,顺便奉上json和实体类间转换的工具类

package com.bw.auto.common.until;

import java.util.Collection;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

/***
 * 用jackson包实现json、对象、Map之间的转换
 * @author Timcoding
 *
 */
public class JsonUtils {

    /**
     * 将 Array,list,set 解析成 Json 串
     * @return Json 串
     */
    public static String arrayToJsonStr(Object objs){
        JSONArray json = JSONArray.fromObject(objs);
        return json.toString();
    }

    /***
     * 将javabean对象和map对象 解析成 Json 串
     * @param obj
     * @return
     */
    public static String objectToJsonStr(Object obj){
        JSONObject json = JSONObject.fromObject(obj);
        return json.toString();

    }

    /***
     * 将javabean对象或者map对象 解析成 Json 串,使用JsonConfig 过滤属性
     * @param obj
     * @param config
     * @return
     */
    public static String objectToJsonStr(Object obj, JsonConfig config ){
        JSONObject json = JSONObject.fromObject(obj,config);
        return json.toString();

    }

    /**
     * 将  Json 串 解析成 Array,list,set
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> Collection<T> jsonStrToArray(String jsonStr){
        JSONArray jsonArray = JSONArray.fromObject(jsonStr);
        Object array = JSONArray.toArray(jsonArray);
        return (Collection<T>) array;
    }

    /**
     * 将  Json 串 解析成 Array
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T[] jsonStrToArray(String jsonStr, Class<T> clazz){
        JSONArray jsonArray = JSONArray.fromObject(jsonStr);
        return (T[]) JSONArray.toArray(jsonArray,clazz);
    }
    /**
     * 将  Json 串 解析成 Collection
     * @return
     */
    public static <T> Collection<T> jsonStrToCollection(String jsonStr, Class<T> clazz){
        JSONArray jsonArray = JSONArray.fromObject(jsonStr);
        @SuppressWarnings("unchecked")
        Collection<T>  array = JSONArray.toCollection(jsonArray,clazz);
        return array;
    }

    /**
     * 将  Json 串 解析成 list
     * @return
     */
    public static <T> List<T> jsonStrToList(String jsonStr, Class<T> clazz){
        return (List<T>) jsonStrToCollection(jsonStr,clazz);
    }

    /**
     * 将  Json 串 解析成 Map或者javabean
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T jsonStrToObject(String jsonStr, Class<T> clazz){
        JSONObject json = JSONObject.fromObject(jsonStr);
        Object obj = JSONObject.toBean(json, clazz);
        return (T) obj;
    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值