springboot的配置文件及其使用
application.properties
1.语法
格式:key=value
如果是修改SpringBoot中的默认配置,那么key则不能任意编写,必须参考SpringBoot官方文档。
application.properties官方文档
2. 案例
在resources目录下新建application.properties
#配置tomcat端口号
server.port=18080
#配置项目根目录
server.servlet.context-path=/demo
此时tomcat端口就变成了了18080,访问根路径就变成了/demo
application.yml
1.简介
YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式,是一种标记语言。可以直观被电脑识别的格式。容易阅读。容易与脚本语言交互。可以支持各种编程语言(C/C++、Ruby、Python、Java、Perl、C#、PHP)。以数据为核心,比XML更简洁。扩展名为.yml或.yaml
2.语法
简单理解起来就是,在yml的语法中是把数据描述成树型结构。
语法:key: value
3.对象数据
语法:
#配置对象数据
key:
key1: value1
key2: value2
#或者
key2: {key1: value1,key2: value2}
案例:
#配置对象数据
user:
name: steven
age: 18
addr: shenzhen
#或者
user2: {name: steven, age: 18, addr:shenzhen}
4.集合数据
语法
#配置集合数据
key:
#value1与-之间存在一个空格
- value1
- value2
#或者
key2: [value1,value2]
案例
#配置集合数据
userList:
#value1与-之间存在一个空格
- steven
- lucy
#或者
userList2: [steven,lucy]
#集合中是对象时
userListObj:
#value1与-之间存在一个空格
- name: steven
age: 18
sex: boy
- name: lucy
age: 17
sex: girl
5.整理案例
#yml简单实战-配置tomcat相关内容
server:
port: 18080
servlet:
context-path: /demo
配置文件与配置类的属性映射方式
获取配置文件中的值我们一般有几种方式:
1.@value注解的方式 只能获取简单值
2.@ConfigurationProperties
3.Environment的方式
1.@value的使用
@value注解将配置文件的值映射到Spring管理的Bean属性值
2.@ConfigurationProperties的使用
通过注解@ConfigurationProperties(prefix=’’配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射。
使用@ConfigurationProperties方式要注意的问题:
创建的对象必须提供getter与Setter方法
添加该注解需要的Maven依赖
案例 (创建一个user类)
/**
* 用户信息
* @author ljiong
* @version
* @description
*/
@Component
@ConfigurationProperties(prefix = "user")
public class User {
//注意,此处的属性名要与yml声明的属性名一致
private String name;
private Integer age;
private String addr;
//省略getter与setter
}
3.使用@value注入值
案例
@RestController
public class HelloController {
@Value("${user2.name}")
private String name;
@Autowired
private User user;
通过@value给那么和user赋予初始值,value里的属性英语yml文件的定义的属性异议对应,否则会赋值失败。
对应的yml应该是
user2:
name: 张三
user:
name: 李四
age: 23
addr: 深圳
//注意一定要加空格
4.映射集合案例
@Component
@ConfigurationProperties(prefix = "user")
public class User {
//注意,此处的属性名要与yml声明的属性名一致
private String name;
private Integer age;
private String addr;
private List<User> userListObj;
对应的yml文件应该是
#配置对象数据
user:
name: steven
age: 18
addr: shenzhen
#集合中是对象时
userListObj:
#value1与-之间存在一个空格
- name: steven
age: 18
sex: boy
- name: lucy
age: 17
sex: girl
5.Environment映射
Environment映射用于一个配置文件中有太多属性名的方便读取方式。
用法如下,修改UserController:
@RestController
public class HelloController {
@Value("${user.name}")
private String name;
@Autowired
private User user;
//Environment 会读取配置文件的所有属性
@Autowired
private Environment env;
@RequestMapping("hello2")
public String helle(){
System.out.println("Hello SpringBoot5!");
return "Hello SpringBoot6!user.name:" + name + ",user:" + user
+ ",env:" + env.getProperty("name") + "-->" + env.getProperty("user.age");
}
}
6.profile
在开发的过程中,需要配置不同的环境,所以即使我们在application.yml中配置了相关的配置项,当时在测试是,需要修改数据源等端口路径的配置,测试完成之后,又上生产环境,这时配置又需要修改,修改起来很麻烦。SpringBoot提供了profile方式解决多环境问题。
多个配置文件方便前换到不同的环境,只需要在application.yml或者properties中修改spring.profiles.active属性即可
例如
spring:
profiles:
active: test //及切换到了application-test.yml的配置了