美文网首页
springboot配置文件读入方法

springboot配置文件读入方法

作者: zz云飞扬 | 来源:发表于2018-12-26 17:33 被阅读0次

    一、自定义属性

    application.yml自定义一组属性:总结,直接@Value(“${属性名}”)

    当我们创建一个springboot项目的时候,系统默认会为我们在src/main/Java/resources目录下创建一个application.properties或者application.yml

    在application.yml自定义一组属性:

    my:

    name:forezp

    age:12

    如果你需要读取配置文件的值只需要加@Value(“${属性名}”):

    @RestController

    publicclass MiyaController {

    @Value("${my.name}")

    privateString name;

    @Value("${my.age}")

    privateintage;

    @RequestMapping(value="/miya")

    publicStringmiya(){

    returnname+":"+age;

    }

    }

    二、将配置文件的属性赋给实体类

    application.yml自定义一组属性:总结,@ConfigurationProperties(prefix

    ="my") 自动注入实体类

    另外需要在应用类或者application类,加@EnableConfigurationProperties(这里写自动注入了属性的类.class)注解

    当我们有很多配置属性的时候,这时我们会把这些属性作为字段来创建一个javabean,并将属性值赋予给他们,比如:

    my:

    name:forezp

    age:12

    number:${random.int}

    uuid:${random.uuid}

    max:${random.int(10)}

    value:${random.value}

    greeting:hi,i'm${my.name}

    其中配置文件中用到了${random} ,它可以用来生成各种不同类型的随机值。

    怎么将这些属性赋于给一个javabean 呢,首先创建一个javabean :

    @ConfigurationProperties(prefix="my")

    @Component

    publicclass ConfigBean {

    privateString name;

    privateintage;

    privateintnumber;

    privateString uuid;

    privateint max;

    privateString value;

    privateString greeting;

      省略了getter setter....

    需要加个注解@ConfigurationProperties,并加上它的prefix。另外@Component可加可不加。另外spring-boot-configuration-processor依赖

    org.springframework.boot

    spring-boot-configuration-processor

    true

    另外需要在应用类或者application类,加EnableConfigurationProperties注解。

    @RestController

    @EnableConfigurationProperties({ConfigBean.class})

    publicclass LucyController {

    @Autowired

    ConfigBeanconfigBean;

    @RequestMapping(value="/lucy")

    publicStringmiya(){

    returnconfigBean.getGreeting()+">>>>"+configBean.getName()+" >>>>"+    configBean.getUuid()+">>>>"+configBean.getMax();

    }

    三、自定义配置文件

    不是默认的配置文件中的配置,总结:用注解@PropertySource(value

    ="classpath:test.properties") 然后实体类会自动注入相应属性。

    上面介绍的是我们都把配置文件写到application.yml中。有时我们不愿意把配置都写到application配置文件中,这时需要我们自定义配置文件,比如

    test.properties:

    com.forezp.name=forezp

    com.forezp.age=12

    怎么将这个配置文件信息赋予给一个javabean呢?

    @Configuration

    @PropertySource(value="classpath:test.properties")

    publicclass User {

    privateString name;

    privateintage;

    publicString getName() {return name; }

    publicvoid setName(String name) {this.name = name; }

    publicint getAge() {return age; }

    publicvoid setAge(int age) {this.age = age;

    }

    }

    四、使用Environment

    #######################方式#########################

    com.zyd.type3=Springboot- @ConfigurationProperties

    com.zyd.title3=使用@ConfigurationProperties获取配置文件

    #map

    com.zyd.login[username]=zhangdeshuai

    com.zyd.login[password]=zhenshuai

    com.zyd.login[callback]=http://www.flyat.cc

    #list

    com.zyd.urls[0]=http://ztool.cc

    com.zyd.urls[1]=http://ztool.cc/format/js

    com.zyd.urls[2]=http://ztool.cc/str2image

    com.zyd.urls[3]=http://ztool.cc/json2Entity

    com.zyd.urls[4]=http://ztool.cc/ua

    #######################方式#########################

    com.zyd.type=Springboot- @Value

    com.zyd.title=使用@Value获取配置文件

    #######################方式#########################

    com.zyd.type2=Springboot- Environment

    com.zyd.title2=使用Environment获取配置文件

    @RequestMapping("/env")

    public Map env() throwsUnsupportedEncodingException {

    Map map = new HashMap();

    map.put("type",env.getProperty("com.zyd.type2"));

    map.put("title", newString(env.getProperty("com.zyd.title2").getBytes("ISO-8859-1"),"UTF-8"));

    return map;

    }

    public static void main(String[] args) throws Exception {

    SpringApplication application = newSpringApplication(Applaction.class);

    application.run(args);

    }

    }

    五、多个环境配置文件

    在现实的开发环境中,我们需要不同的配置环境;格式为application-{profile}.properties,其中{profile}对应你的环境标识,比如:

    application-test.properties:测试环境

    application-dev.properties:开发环境

    application-prod.properties:生产环境

    怎么使用?只需要我们在application.yml中加:

    spring:

    profiles:

    active: dev

    其中application-dev.yml:

    server:

    port:8082

    启动工程,发现程序的端口不再是8080,而是8082。

    相关文章

      网友评论

          本文标题:springboot配置文件读入方法

          本文链接:https://www.haomeiwen.com/subject/pmqklqtx.html