获取配置文件数据的方式
- @Value
- Environment
- ConfigurationProperties
具体代码实例
首先是YAML格式的配置文件
application.yml
person:
name: zhangsan
address:
- beijing
- shanghai
message1: 'hello \n world' # 单引忽略转移字符
message2: "hello \n world" # 双引识别转移字符
创建Person类用作测试,创建相关类主要服务于@ConfigurationProperties注解进行测试内容,注意要给相关属性配置get和set函数,没有set函数无法进行注入,需要注入的属性名字需要与配置文件中的属性名字相同才能够进行自动注入
Person
@Component
@ConfigurationProperties(prefix = "person")//prefix设置注入属性前缀
public class Person {
private String name;
private String age;
private String[] address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", address=" + Arrays.toString(address) +
'}';
}
}
HelloController
@RestController
@PropertySource(value = "classpath:application.yml")
public class HelloController {
@Value("${name}")
private String name;
@Value("${person.name}")
private String name2;
@Value("${address[0]}")
private String address;
@Value("${message1}")
private String message1;
@Value("${message2}")
private String message2;
@Autowired
private Environment env;
@Autowired
private Person person;
@RequestMapping("/hello")
public String hello(){
System.out.println(name);
System.out.println(name2);
System.out.println(address);
System.out.println(message1);
System.out.println(message2);
System.out.println("----------------------");
System.out.println(env.getProperty("person.name"));
System.out.println(env.getProperty("address[0]"));
System.out.println("----------------------");
System.out.println(person);
return "hello Spring Boot !";
}
}
SpringBootInitApplication
@SpringBootApplication
public class SpringBootInitApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootInitApplication.class, args);
}
}