读取配置内容
- @Vlaue
- Enviroment
- @ConfigurationProperties
application.yml文件
name: zhangyy
# map(对象)
person1:
name1: ${name}
age1: 31
# map(对象)行内写法
person2: {name2: yyzhang1,age2: 32}
# 数组
address1:
- chengdu
- shanghai
# 数组行内写法
address2: [beijing,shenzheng]
# 纯量:单个的、不可再分的值
msg1: 'hello \n world' #单引忽略转义字符
msg2: "hello \n world" #双引识别转义字符
Value
Controller
package com.yy.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Value("${name}")
private String name;
@Value("${person1.name1}")
private String name1;
@Value("${person1.age1}")
private int age1;
@Value("${person2.name2}")
private String name2;
@Value("${person2.age2}")
private int age2;
@Value("${address1[0]}")
private String address10;
@Value("${address1[1]}")
private String address11;
@Value("${address2[0]}")
private String address20;
@Value("${address2[1]}")
private String address21;
@Value("${msg1}")
private String msg1;
@Value("${msg2}")
private String msg2;
@RequestMapping("/hello")
public String hello(){
System.out.println(name);
System.out.println(name1);
System.out.println(name2);
System.out.println(age1);
System.out.println(age2);
System.out.println(address10);
System.out.println(address11);
System.out.println(address20);
System.out.println(address21);
System.out.println(msg1);
System.out.println(msg2);
return "hello Spring Boot 2";
}
}
输出
zhangyy
zhangyy
yyzhang1
31
32
chengdu
shanghai
beijing
shenzheng
hello \n world
hello
world
Enviroment
Controller
package com.yy.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private Environment env;
@RequestMapping("/hello")
public String hello(){
System.out.println(env.getProperty("person1.name"));
System.out.println(env.getProperty("address1[0]"));
return "hello Spring Boot 2";
}
}
输出
zhangyy
chengdu
ConfigurationProperties
定义一个Person2类
package com.yy.controller.domain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
//表示此类被Spring识别,是一个bean类
@ConfigurationProperties(prefix = "person2")
//表示去yml中取值,且取前缀为person2对应的属性值
public class Person2 {
private String name2;
private String age2;
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
public String getAge2() {
return age2;
}
public void setAge2(String age2) {
this.age2 = age2;
}
@Override
public String toString() {
return "Person2{" +
"name2='" + name2 + '\'' +
", age2='" + age2 + '\'' +
'}';
}
}
Controller
package com.yy.controller;
import com.yy.controller.domain.Person2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private Person2 person2;
@RequestMapping("/hello")
public String hello(){
System.out.println(person2.toString());
return "hello Spring Boot 2";
}
}
输出
Person2{name2='yyzhang1', age2='32'}