springboot配置文件读入方法

2018-12-26  本文已影响0人  zz云飞扬

一、自定义属性

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。

上一篇下一篇

猜你喜欢

热点阅读