目录
1.配置文件的作用
1.项目中的数据都在配置文件中配置
2.数据库连接信息
3.项目的启动端口
4.第三方系统的调用秘钥等信息
5.用于发现和定位问题的普通日志和异常日志
配置文件的分类:
1.系统的配置文件
2.用户自定义文件
2.配置文件的格式
.propertiex .yml
规则:
1.一个项目中可以存下两个配置文件,但不建议一个项目中出现两种配置文件
2.当一个项目的某个配置,出现两种配置文件时,配置会以properies为主(忽略yml配置)
3.properties配置文件
3.1priperties基本语法
key=value
#是注释
#前后不能加空格
server.port=9090
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
3.2读取配置文件
项目中,要主动读取配置文件的内容,要使用@Value实现
@Value要使用${}的格式读取
@Controller
public class UserController {
@Value("${server.port}")//读取配置文件项
private String port;
@ResponseBody//返回一个非静态页面的数据
@RequestMapping("sayhi")//设置路由地址-->必须小写
public String sayHi(){
return "hello,World.| port:"+port;
}
}
4.yml配置文件
yml优点:
- 可读性高,写法简单
- 支持更多数据类型
- 执行更多变成语言
4.1yml基本语法
key: value
key和value之间要用冒号加空格组成
配置文件
server:
port: 9092
myyml:
string: hello,yml
打印类的实现
@Controller
public class UserController {
@Value("${myyml:string}")
private String ymlstr;
@Value("${server:port}")
private String port;
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi(){
System.out.println("ymlstr:"+ymlstr);
System.out.println("port:"+port);
return "hello,world";
}
}
输出
使⽤ yml 连接数据库
#连接数据库
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
name: root
password: 123456
4.2 yml 使⽤进阶
4.2.1 yml 配置不同数据类型及 null
#字符串
string.value: hello
#布尔值
boolean.value: true
boolean.value: false
#整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
#浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~
4.2.1.1 yml 配置读取
结论:
- 字符串默认不用加单引号或者双引号
- 不加或者单引号会原样输出
- 双引号特殊字符会作为本事想表达的样子输出
4.2.2 配置对象
#对象写法1
student1:
id: 1
name: 张三
age: 18
或者是使⽤⾏内写法(与上⾯的写法作⽤⼀致)
#对象写法2
student2: {id: 2,name: 李四,age: 20}
这个时候就不能⽤ @Value 来读取配置中的对象了,此时要使⽤另⼀个注解
@ConfigurationProperties 来读取
@Data//集合注解
@ConfigurationProperties(prefix="student1")//读取对象
@Component //启动读取,要加五大类注解
public class Student {
private int id;
private String name;
private int age;
}
打印类的实现
@Controller
public class UserController {
@Autowired
private Student student;
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi(){
return "student:"+student;
}
}
4.2.3 配置集合
配置⽂件也可以配置 list 集合
dbtypes:
name:
- mysql
- sqlserver
- db2
或者是使⽤⾏内写法(与上⾯的写法作⽤⼀致)
dbtypes: {name: [mysql,sqlserver,db2]}
集合的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的
@Component
@Data
@ConfigurationProperties("dbtypes")//读取配置文件中的集合
public class ReadList {
private List<String> name;
}
@Controller
public class UserController {
@Resource private ReadList readList;
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi() {
return "readList"+readList;
}
}
5.properties vs yml
- properties是以key=value的形式配置文件,yml是以冒号+空格配置文件的
- yml可以解决数据冗余的问题
- yml可以支持多种语言
- yml支持多种数据类型