一、Spring Boot读取配置文件applicaion.properties 和 application.yml文件数据
application.properties文件的内容如下:
book.name = SpringCloudInAction
book.author = HDN
1、通过@Value注解进行读取
1.1、配置一个Bean使其装载到Spring的Ioc容器中
/**
* @author HDN
* @date 2019/6/14 14:37
*/
@Component
public class Book {
@Value("${book.name}")
private String name;
@Value("${book.author}")
private String author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
1.2、通过注入Book来获取配置文件中的值
/**
* @author HDN
* @date 2019/6/5 16:19
*/
@RestController
@RequestMapping("/controller")
public class HelloController {
@Autowired
Book book;
@RequestMapping("/getProperties")
public String getProperties(){
return "1、通过@Value注解获取配置文件的属性值:"+book.getName()+"----"+book.getAuthor()+"<p>"+
}
}
1.3、运行结果如下:
2、通过注入Environment对象来读取配置文件的内容
2.1、直接注入Environment对象根据getProperty(param)方法就可得到对应的值
param:配置文件中=前面的属性(key属性)
/**
* @author HDN
* @date 2019/6/5 16:19
*/
@RestController
@RequestMapping("/controller")
public class HelloController {
@Autowired
Book book;
@Autowired
Environment env;
@RequestMapping("/getProperties")
public String getProperties(){
return "1、通过@Value注解获取配置文件的属性值:"+book.getName()+"----"+book.getAuthor()+"<p>"+
"2、通过Environment注入对象来获取配置文件属性值:"+env.getProperty("book.name")+"----"+env.getProperty("book.author")+"<p>"+
}
}
2.2、运行结果如下:
这里需要注意Environment导的包:import org.springframework.core.env.Environment;
3、通过@ConfigurationProperties来读取配置文件的内容
3.1、配置一个Bean使其装载到Spring的Ioc容器中
/**
* @author HDN
* @date 2019/6/14 15:25
*/
@Component
@ConfigurationProperties(prefix = "book")
public class BookConfigPro {
private String name;
private String author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
3.2、通过注入BookConfigPro来获取配置文件中的值
/**
* @author HDN
* @date 2019/6/5 16:19
*/
@RestController
@RequestMapping("/controller")
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
@Autowired
Book book;
@Autowired
Environment env;
@Autowired
BookConfigPro bookConfigPro;
@RequestMapping("/getProperties")
public String getProperties(){
return "1、通过@Value注解获取配置文件的属性值:"+book.getName()+"----"+book.getAuthor()+"<p>"+
"2、通过Environment注入对象来获取配置文件属性值:"+env.getProperty("book.name")+"----"+env.getProperty("book.author")+"<p>"+
"3、通过@ConfigurationProperties注解获取配置文件属性:"+bookConfigPro.getName()+"----"+bookConfigPro.getAuthor();
}
}
3.3、运行结果如下:
二、如果有自己定义的配置文件,如config.properties,要使用@PropertySource(value="config.properties")注解来加载自定义配置文件中的内容。
这里值得注意的两点内容:第一、YAML文件不能使用@PropertySource注解;第二、如果自定义的配置文件和 application.properties中有相同的配置时,优先加载application.properties文件中的配置内容。