测试代码如下,代码中有三种注入方式:
取值方式: 1.@Value 单个取值 --适合少量取值
2.Evironment 对象批量取值 --适合很多数据注入
3.封装对象指定前缀取值 --适合某个对象取值
@RestController
@RequestMapping("/test")
public class TestController {
/*
取值方式:1.@Value 单个取值 --适合少量取值
2.Evironment 对象批量取值 --适合很多数据注入
3.封装对象指定前缀取值 --适合某个对象取值
*/
@Value("${name}")
private String name;
@Value("${person.name}")
private String name2;
@Value("${person.age}")
private String age;
@Value("${address[0]}")
private String address1;
@Value("${msg1}")
private String msg1;
@Value("${msg2}")
private String msg2;
//方式二:批量取值
@Autowired
private Environment env;
//方式三:通过bean对象取值,注入user对象
@Autowired
private Person person;
@RequestMapping("/hello2")
public String hello2(){
System.out.println("name = " + name);
System.out.println("name2 = " + name2);
System.out.println("age = " + age);
System.out.println("address1 = " + address1);
System.out.println("msg1 = " + msg1);
System.out.println("msg2 = " + msg2);
System.out.println("=========================");
System.out.println(env.getProperty("person.age"));
System.out.println(env.getProperty("address[0]"));
System.out.println(env.getProperty("msg1"));
System.out.println(env.getProperty("msg2"));
System.out.println("=========================");
System.out.println(person);
System.out.println("getAddress = " + person.getAddress());
String[] address = person.getAddress();
for (String s : address) {
System.out.println(s);
}
return "HELLO SPRING BOOT----";
}
}
对应的yml文件中的内容如下:application.yml
server:
port: 8091
name: abc
#对象
person:
name: lisi
age: 20
address:
- beijing
- shanghai
person2: {name: zhangsan,age: 22}
#数组类型
address:
- beijing
- shanghai
address2: [beijing,shanghai]
#纯量
msg1: 'hello \n world' #单引号 原样输出
msg2: "hello \n world" #双引号
#引用类型
person3:
name: ${name}