东城区网站建设公司专门做衬衣网站

当前位置: 首页 > news >正文

东城区网站建设公司,专门做衬衣网站,登封搜索引擎优化,在线做免费网站文章目录 #x1f340;配置⽂件的作⽤#x1f334;SpringBoot配置⽂件#x1f38b;配置⽂件的格式#x1f384;properties配置⽂件#x1f6a9;properties基本语法#x1f6a9;读取配置⽂件#x1f6a9;properties的缺点 #x1f333;yml配置⽂件yml基本语法#x1f6… 文章目录 配置⽂件的作⽤SpringBoot配置⽂件配置⽂件的格式properties配置⽂件properties基本语法读取配置⽂件properties的缺点 yml配置⽂件yml基本语法yml 使⽤进阶yml配置不同数据类型及nullyml配置读取注意事项value值加单双引号 配置对象配置集合配置Map yml优缺点 ⭕总结 配置⽂件的作⽤ 计算机上有数以千计的配置⽂件,我们使⽤的绝⼤多数软件,⽐如浏览器,微信,Idea,甚⾄电脑,⼿机,都离不开配置⽂件. 我们可能永远不会直接与其中的⼤部分⽂件打交道但它们确实以不同的形式散落在我们的计算机上,⽐如C:\Users,C:\Windows⽂件夹,以及各种.config,.xml⽂件 配置⽂件主要是为了解决硬编码带来的问题,把可能会发⽣改变的信息,放在⼀个集中的地⽅,当我们启动某个程序时,应⽤程序从配置⽂件中读取数据,并加载运⾏. 硬编码是将数据直接嵌⼊到程序或其他可执⾏对象的源代码中,也就是我们常说的代码写死. ⽐如⼿机字体⼤⼩ 如果采⽤硬编码的⽅式,就直接在程序中指定字体⼤⼩,所有的⽤⼾使⽤的都是同⼀个字体⼤⼩ 但是不同的⽤⼾有不同的偏好,我们可以把⼿机字体的⼤⼩放在配置⽂件中,当程序启动时,读取配置,以⽤⼾设置的字体⼤⼩来显⽰. 使⽤配置⽂件,可以使程序完成⽤⼾和应⽤程序的交互,或者应⽤程序与其他应⽤程序的交互 SpringBoot配置⽂件 SpringBoot⽀持并定义了配置⽂件的格式,也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的. 很多项⽬或者框架的配置信息也放在配置⽂件中,⽐如: 项⽬的启动端 数据库的连接信息(包含⽤⼾名和密码的设置) 第三⽅系统的调⽤密钥等信息 ⽤于发现和定位问题的普通⽇志和异常⽇志等. 对于项⽬的启动端⼝ SpringBoot内置了Tomcat服务器,默认端⼝号是8080,但是⽤⼾电脑上8080端⼝号有可能就被其他 应⽤程序占⽤了,所以SpringBoot需要⽀持让⽤⼾⾃定义端⼝号 而对于数据库连接信息 为了更⽅便简单的访问数据库,出现了⼀些持久层框架,其实就是对JDBC进⾏了更深层次的封装.让⽤⼾通过简单⼏⾏代码就可完成数据库的访问.但是不同的应⽤程序访问的数据库不同,这些持久层框架就需要⽀持⽤⼾可以⾃定义配置数据库的连接信息 接下来我们先简单配置看一下 我们在前⾯讲了Tocmat默认端⼝号是8080,所以我们程序访问时的端⼝号也是8080但是如果8080端⼝号已经被其他进程使⽤了呢?我们可以通过配置⽂件来修改服务的端⼝号SpringBoot在创建项⽬时,就已经帮我们创建了配置⽂件 修改 application.properties ⽂件 server.port9090再次启动我们观察日志中tomcat所用端口 显⽰Tomcat启动端⼝号为9090 配置⽂件的格式 SpringBoot配置⽂件有以下三种 application.properties application.yml application.yaml
yml为yaml的简写,实际开发中出现频率最⾼.yaml和yml的使⽤⽅式⼀样,博主这里只讲yml⽂件的使⽤ 当应⽤程序启动时,SpringBoot会⾃动从classpath路径找到并加载application.properties 和application.yaml 或者 application.yml ⽂件 也可以通过spring.config.name指定⽂件路径和名称参考链接点我 那么如何理解这两种配置文件的区别呢 类似商品的包装⼀样,有新⽼两款包装.properties类型的配置⽂件就属于⽼款包装也是创建SpringBoot项⽬时默认的⽂件格式主要是因为仓库⾥还有库存)⽽yml属于新版包装如果⽤⼾了解情况直接指定要新款包装那么就直接发给他 当然这里还有一些特殊情况需要说明 理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中当 .properties 和 .yml 并存时两个配置都会加载.如果配置⽂件内容有冲突,则以 .properties 为主,也就是.properties 优先级更⾼. 虽然理论上来讲 .properties 可以和 .yml 共存但实际的业务当中我们通常会采取⼀种统⼀的配置⽂件格式这样可以更好的维护(降低故障率).
properties配置⽂件 properties配置⽂件是最早期的配置⽂件格式也是创建SpringBoot项⽬默认的配置⽂件 properties基本语法 properties是以键值的形式配置的key和value之间是以连接的如

配置项⽬端⼝号

server.port8080#配置数据库连接信息 spring.datasource.urljdbc:mysql://127.0.0.0:3306/dbname?characterEncodingutf8useSSLfalse spring.datasource.usernameroot spring.datasource.passwordroot想要了解更多配置的小伙伴可以参考 SpringBoot配置 读取配置⽂件 如果在项⽬中想要主动的读取配置⽂件中的内容可以使⽤ Value 注解来实现。 Value 注解使⽤ \({} 的格式读取如下代码所⽰ 获取properties 配置如下: RestController public class PropertiesController {Value(\){server.port})private String value;RequestMapping(/getValue)public String getValue() {return 端口号为value;} } 获取如下 properties的缺点 properties配置是以key-value的形式配置的如下图所示
从上述配置key看出properties配置⽂件中会有很多的冗余的信息⽐如这些 想要解决这个问题就可以使⽤yml配置⽂件的格式化了. yml配置⽂件 yml是YAML是缩写它的全称Yet Another Markup Language翻译成中⽂就是“另⼀种标记语⾔. yml基本语法 yml是树形结构的配置⽂件它的基础语法是key: value. key和value之间使⽤英⽂冒号加空格的⽅式组成空格不可省略
我们刚刚也说过了yml可以解决properties配置⽂件冗余信息的问题。接下来我们就以数据库为例看一下yml是如何解决的yml配置文件如下 spring:datasource:url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncodingutf8useSSLfalseusername: rootpassword: root使用注意事项 properties用 . 将每一层文件分开yml每一层结束后用 分开。并且需要换行当然也可以使用 . )换行前面空余部分是一个空格(相较于上一行)而不是一个tab 接下来我们看一看两者的代码量的对比对比如下 yml 使⽤进阶 yml配置不同数据类型及null

字符串

string.value: Hello

布尔值true或false

boolean.value: true boolean.value1: false

整数

int.value: 10

浮点数

float.value: 3.14159

Null~代表null

null.value: ~

空字符串

#, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来 empty.value: yml配置读取 yml读取配置的⽅式和properties相同使⽤Value注解即可实现代码如下 RestController public class YmlController {Value(\({string.value})private String say;RequestMapping(/getSay)public String getSay() {return say:say;} }读取结果如下 注意事项value值加单双引号 字符串默认不⽤加上单引号或者双引号如果加英⽂的单双引号可以表⽰特殊的含义。 尝试在application.yml中配置如下信息 string:str1: Hello \n 遇事问春风乄.str2: Hello \n 遇事问春风乄.str3: Hello \n 遇事问春风乄.获取配置文件代码如下 RestController public class HelloController {Value(\){string.str1})private String hello1;Value(\({string.str2})private String hello2;Value(\){string.str3})private String hello3;RequestMapping(/getHello)public String getHello() {System.out.println(str1: hello1);System.out.println(str2: hello2);System.out.println(str3: hello3);return ok;} }执行结果如下 从上述结果可以看出 字符串默认不⽤加上单引号或者双引号。 单引号会转义特殊字符使其失去特殊功能,始终是⼀个普通的字符串. 双引号不会转义字符串⾥⾯的特殊字符,特殊字符会表⽰本⾝的含义. 此处的转义理解起来会有些拗⼝,\n本意表⽰的是换⾏ 使⽤单引号会转义,就是说,\n不再表⽰换⾏了,⽽是表⽰⼀个普通的字符串 使⽤双引号不会转义,表⽰\n表⽰的是它本⾝的含义,就是换⾏ 当然每个人理解不同意思也就不同 配置对象 我们还可以在yml中配置对象如下配置 student:id: 1name: 遇事问春风乄age: 18或者是使⽤⾏内写法与上⾯的写法作⽤⼀致 student: {id: 1,name: Java,age: 18}这个时候就不能⽤Value来读取配置中的对象了此时要使⽤另⼀个注解 ConfigurationProperties 来读取具体实现如下 ConfigurationProperties(prefix studnet) Component Data public class Student {private int id;private String name;private int age; }这个注解的意思是个读取了配置文件里面的对象 读取代码如下 RestController public class StudentController {Autowiredprivate Student student;RequestMapping(/readStudent)public String readStudent(){return student.toString();} }配置集合 配置⽂件也可以配置list集合如下所⽰ 集合的读取和对象⼀样也是使⽤ ConfigurationProperties 来读取的具体实现如下 Component ConfigurationProperties(dbtypes) Data public class ListConfig {private ListString name; }访问集合如下 RestController public class ReadYm {Autowiredprivate ListConfig listConfig;RequestMapping(/readList)public String readList(){return listConfig.toString();} }注意事项 配置Map 配置⽂件也可以配置map如下所⽰ maptypes:map:k1: kk1k2: kk2k3: kk或者是使⽤⾏内写法(与上⾯的写法作⽤⼀致): maptypes: {map: {k1: kk1,k2: kk2, k3: kk3}}Map的读取和对象⼀样也是使⽤ ConfigurationProperties 来读取的具体实现如下 Component ConfigurationProperties(maptypes) Data public class MapConfig {private HashMapString,String map; }访问map如下 RestController public class ReadYml {Autowiredprivate MapConfig mapConfig;RequestMapping(/readMap)public String readStudent(){return mapConfig.toString();} }yml优缺点 优点: 可读性⾼写法简单,易于理解 ⽀持更多的数据类型,可以简单表达对象,数组,ListMap等数据形态. ⽀持更多的编程语⾔,不⽌是Java中可以使⽤,在Golang,Python,Ruby,JavaScript中也可以使⽤
缺点: 不适合写复杂的配置⽂件 对格式有较强要求
⭕总结 关于《【JavaEE进阶】 SpringBoot配置⽂件》就讲解到这儿感谢大家的支持欢迎各位留言交流以及批评指正如果文章对您有帮助或者觉得作者写的还不错可以点一下关注点赞收藏支持一下