哪里可以做产品购物网站,做爰全过程免费的教网站,网站建设优化开发公司哪家好,找生意做去哪个网站SpringBoot配置文件 配置文件作用SpringBoot配置文件配置文件快速入手配置文件的格式properties配置文件说明基本语法读取配置文件properties缺点分析 yml配置文件说明yml基本语法yml使用进阶yml配置读取配置对象配置集合配置Mapyml优缺点 配置文件作用
计算机上有数以千计的配… SpringBoot配置文件 配置文件作用SpringBoot配置文件配置文件快速入手配置文件的格式properties配置文件说明基本语法读取配置文件properties缺点分析 yml配置文件说明yml基本语法yml使用进阶yml配置读取配置对象配置集合配置Mapyml优缺点 配置文件作用
计算机上有数以千计的配置⽂件, 我们使⽤的绝⼤多数软件, ⽐如浏览器, 微信, Idea, 甚⾄电脑, ⼿机, 都离不开配置⽂件. 我们可能永远不会直接与其中的⼤部分⽂件打交道但它们确实以不同的形式散落在我们的计算机上, ⽐如C:\Users, C:\Windows⽂件夹, 以及各种 *.config, *.xml ⽂件
配置⽂件主要是为了解决硬编码带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当我们启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏ 硬编码是将数据直接嵌⼊到程序或其他可执⾏对象的源代码中, 也就是我们常说的代码写死. ⽐如⼿机字体⼤⼩ 如果采⽤硬编码的⽅式, 就直接在程序中指定字体⼤⼩, 所有的⽤⼾使⽤的都是同⼀个字体⼤⼩但是不同的⽤⼾有不同的偏好, 我们可以把⼿机字体的⼤⼩放在配置⽂件中, 当程序启动时, 读取配置, 以⽤⼾设置的字体⼤⼩来显⽰ SpringBoot配置文件
SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.
很多项⽬或者框架的配置信息也放在配置⽂件中, ⽐如: • 项⽬的启动端⼝ • 数据库的连接信息(包含⽤⼾名和密码的设置) • 第三⽅系统的调⽤密钥等信息 • ⽤于发现和定位问题的普通⽇志和异常⽇志等.
配置文件快速入手
我们在前⾯讲了Tocmat 默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080 但是如果8080端⼝号已经被其他进程使⽤了呢? 我们可以通过配置⽂件来修改服务的端⼝号 SpringBoot 在创建项⽬时, 就已经帮我们创建了配置⽂件 修改application.properties文件 重新启动服务 显示Tomcat启动端口号为9090
配置文件的格式
SpringBoot配置文件有以下三种
application.propertiesapplication.ymlapplication.yaml yml为yaml的简写 实际开发中出现的频率最高 特殊说明
理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中当 .properties 和 .yml并存时两个配置都会加载. 如果配置⽂件内容有冲突, 则以 .properties 为主, 也就是.properties 优先级更⾼.虽然理论上来讲 .properties 可以和 .yml 共存但实际的业务当中我们通常会采取⼀种统⼀的配置⽂件格式这样可以更好的维护(降低故障率)
properties配置文件说明
properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件
基本语法
properties 是以键值的形式配置的key 和 value 之间是以连接的如 读取配置文件
如果在项目中,想要主动的读取配置文件中的内容,可以使用Value注解来实现 Value注解使用${}的格式读取
RestController
public class PropertiesController {Value(${mykey.key1})private String key1;RequestMapping(/key)public String key(){return 接收到key key1;}
}properties缺点分析
properties 配置是以 key-value 的形式配置的 从上述配置key看出,properties配置文件中会有很多的冗余的信息
要想解决这个问题,就可以使用yml配置文件的格式化了
yml配置文件说明
yml 是 YAML 是缩写它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔.我们先来学习yml的语法
yml基本语法
yml 是树形结构的配置⽂件它的基础语法是key: value. key 和 value 之间使⽤英⽂冒号加空格的⽅式组成空格不可省略 基础语法如下 yml使用进阶
#字符串
string.value: hello#布尔值
boolean.value: true#整数
int.value: 10#浮点数
float.value: 3.1415926#null ~表示null
null.value: ~# 空字符串 直接后面什么都不加就可以了,但是这种方式不直观,更多的表示使用引号括起来
empty.value: yml配置读取
yml 读取配置的⽅式和 properties 相同使⽤ Value 注解即可
注意事项 value值加单双引号 字符串默认不⽤加上单引号或者双引号如果加英⽂的单双引号可以表⽰特殊的含义。尝试在 application.yml 中配置如下信息 运行结果 从上述结果可以看出
字符串默认不需要加上单引号或者双引号单引号会转义特殊字符.使其失去特殊功能,始终是一个普通字符双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义
配置对象
我们还可以在yml中配置对象
student:id: 1name: zhangsanage: 10#或者使用行内写法
student: {id: 2, name: lisi, age: 20}此时就不能用Value 来读取配置中的对象了, 此时要使用另一个注解ConfigurationProperties 来读取
具体实现
ConfigurationProperties(prefix student)
Component
Data
public class Student {private int id;private String name;private int age;
} 配置集合
配置⽂件也可以配置 list 集合如下所⽰
dbtypes:name:- mysql- sqlserver- db2集合的读取和对象⼀样也是使⽤ ConfigurationProperties 来读取的具体实现如下
Data
ConfigurationProperties(prefix dbtypes)
Component
public class ListConfig {private ListString name;
} 配置Map
配置⽂件也可以配置 map如下所⽰
maptypes:map:k1: v1k2: v2k3: v3
Map的读取和对象⼀样也是使⽤ ConfigurationProperties 来读取的具体实现如下
Data
Component
ConfigurationProperties(prefix maptypes)
public class MapConfig {private HashMapString,String map ;
} yml优缺点
优点 可读性⾼写法简单, 易于理解 ⽀持更多的数据类型, 可以简单表达对象, 数组, ListMap等数据形态 ⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤ 缺点 不适合写复杂的配置⽂件 对格式有较强的要求