目录
2.1 在 .properties 下简单配置一个端口号来测试一下
2.3 .properties .yml 都同时配置不同的端口号
1.配置文件的作用
1)数据库的连接信息(包含⽤户名和密码的设置);2)项⽬的启动端⼝;3)第三⽅系统的调⽤秘钥等信息;4)⽤于发现和定位问题的普通⽇志和异常⽇志等。
2.配置文件的格式
Spring Boot 配置文件主要分为两种格式
1) .properties
2) .yml
2.1 在 .properties 下简单配置一个端口号来测试一下
将端口号改为 8085
通过改变后的端口号来访问获取的数据
2.2 在 .yml 下简单配置一个端口号来测试一下
在配置前,先把 .properties 中配置好的端口后删除掉
在 .yml 下配置端口号为 8090
2.3 .properties .yml 都同时配置不同的端口号
.properties 端口号配置为 8085
.yml 端口号配置为 8090
启动看项目选用哪个端口
从结果来看,项目选用的是 .properties 的端口
2.4 两种配置的规则
1)理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”,那 么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息2) 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配 置⽂件格式,这样可以更好的维护(降低故障率)
为配置⽂件安装提示插件
![](https://i-blog.csdnimg.cn/blog_migrate/0b5c82d76d5c314eb02c72dd0d1c91ad.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9305fdccbb45969a4722c9000059fd4.png)
3. properties 配置文件说明
3.1 properties 基本语法
![](https://i-blog.csdnimg.cn/blog_migrate/c7b5466c2219702d45b92512800e7038.png)
因为代码结束是没有 ; 的,所以要注意后面是否多了一个空格
配置⽂件中使⽤“#”来添加注释信息。不过 .properties 是不支持中文的,当我们把项目关闭后再打开就会乱码,变成????
这就需要我们进行配置,将下面的都设置为 UTF-8
当我们设置完成之后,当前文件还是不支持中文的原因是,文件已经定型了,使用的是其它编码格式,这就需要我们手动将 aplication.properies 删除掉,重新在原来的路径下创建回来,就可以支持中文了。后面再创建的也不会有乱码的情况了
3.2 读取配置文件
@Controller
public class UserController {
@Value("${server.port}") // 读取配置信息的端口号
private String port;//将端口号赋进去
@ResponseBody //返回一个非静态页面数据
@RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
public String sayHi() {
return "hello spring boot,"+ port;
}
}
获取结果
获取 .yml 中的配置信息也一样
@Controller
public class UserController {
@Value("${inyml.string}")
private String port;//将端口号赋进去
@ResponseBody //返回一个非静态页面数据
@RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
public String sayHi() {
return "hello spring boot,port: "+ port;
}
}
获取多个配置信息
@Controller
public class UserController {
@Value("${server.port}") // 读取配置信息的端口号
private String port;//将端口号赋进去
@Value("${inyml.string}")
private String yml;
@ResponseBody //返回一个非静态页面数据
@RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
public String sayHi() {
//return "hello spring boot,port: "+ port; //获取单个
return "port: "+ port + "|| yml: " + yml; //获取多个
}
}
3.3 properties 缺点
properties 配置是以 key-value 的形式配置,所以冗余信息就会很多,如连接数据库时,都要反复写 spring.datasource.
#连接数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog_system?characterEncoding=utf8mb4&useSSL=true
spring.datasource.username=root
spring.datasource.password=123
4. yml 配置文件说明
4.1 yml 基本语法
![](https://i-blog.csdnimg.cn/blog_migrate/9a5986d34f4942444e1b05c2d8c80e9a.png)
连接数据库
#连接数据库
spring:
datasoure:
ure: jdbc:mysql://127.0.0.1:3306/blog_system?characterEncoding=utf8mb4&useSSL=true
name: root
password: 123
可以对比 .properties 配置 ,简便了很多。
字符串引号的区别
在 .yml 中进行字符串配置
mystring: hello\n世界
mystring2: 'hello\n世界'
mystring3: "hello\n世界"
@Controller
public class UserController {
@Value("${mystring}")
private String mystring;
@Value("${mystring2}")
private String mystring2;
@Value("${mystring3}")
private String mystring3;
@ResponseBody //返回一个非静态页面数据
@RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
public String sayHi() {
System.out.println("mystring: " + mystring);
System.out.println("mystring2: " + mystring2);
System.out.println("mystring3: " + mystring3);
return "mystring: "+ mystring + " || mystring2: " + mystring2 + " || mystring3: " + mystring3; //获取多个
}
}
看获取结果,在字符串中,\n 是换行,加了双引号,就会按本身表达的意思执行,如果不加或者加单引号,那么默认会将字符串中的特殊字符进行转义, \n → \\n(转义处理)
4.2 yml 使用
4.2.1 yml 配置不同的数据类型及 null
#字符串
string.value: hello
#布尔值
boolean.value: true
boolean.value2: 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.2 配置对象
student:
id: 1
name: yang
age: 20
student2: {id: 1,name: yang,age: 20}
//Data 注解里面get、set方法都有
@Data
@ConfigurationProperties(prefix = "student") //读取配置文件中的对象
@Component //不能省略
public class Student {
private int id;
private String name;
private int age;
}
调用类
在调用类就不再是使用 @Value
而是使用 @Autowired
@Controller
public class UserController {
@Autowired
private Student student;
@ResponseBody //返回一个非静态页面数据
@RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
public String sayHi() {
return "studengt: " + student;
}
4.2.3 配置集合
配置文件也可以配置list 集合,或者行内写法,如下所示
#配置集合
mydb:
name:
-mysql
-sqlserver
-db2
mydb2: {name: [mysql,sqlserver,db2]}
@Component
@Data
@ConfigurationProperties(prefix = "mydb")
public class ReadList {
private List<String> name;
}
配置和读取对于关系如下
调用启动类
@Controller
public class UserController {
@Autowired
private ReadList readList;
@ResponseBody //返回一个非静态页面数据
@RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
public String sayHi() {
return "ReadList: " + readList.getName();//返回集合里面的name属性,因为集合里面设置了一个属性
}
}
5.总结
● properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。● properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。● yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。● yml 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件。