原文地址html
目录java
概述spring
2.配置文件位置数组
3.配置文件的定义服务器
3.3若是是定义数组dom
4.配置文件的使用spring-boot
Springboot开发中很重要的一句话就是约定大于配置,有不少配置都有默认值,咱们使用便可。可是若是要根据本身的需求替换默认配置的话,能够经过配置文件修改。
主要用来修改Boot中相关默认的配置,有application.properties或者application.yml(application.yaml)两种配置方式进行配置。
SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件
对于application.properties配置文件,咱们只需经过以下相似的键值对进行配置相关参数便可,这里主要看下yml方式要注意的地方
在yml中如何定义配置,格式以下
k:(空格)v表示一对键值对(空格必须有);以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的,
直接使用k: v:书写便可,好比 age: 14
若是是字符串,双引号中的特殊字符会表达自己想表示的意思,单引号中的特殊字符将做为普通字符输出
name: "zhangsan \n lisi" 则输出 zhangsan 换行lisi
name: 'zhangsan \n lisi' 则输出 zhangsan \n lisi
Person:
name: 李四
age: 14
行内写法
Person: {name: 李四,age: 14}
用-值表示数组中的一个元素
pets:
-cat
-dog
行内写法
pets: {cat,dog}
要能绑定配置文件中的属性,只有使用注解@Configuration或者@Component标注让一个类成为容器中的组件才能够绑定属性,无论是yml仍是properies配置文件,读取里面的值绑定到属性的方式有两种。
第一种:使用@ConfigurationProperties(prefix = "person")注解,其中的prefix表示这个前缀下面的全部属性
第二种:使用@value()注解,括号中能够是字面量、${配置文件中的值}、#{SpEL表达式},
测试
注意:
1. 使用@ConfigurationProperties方式能够进行配置文件与实体字段的自动映射,但须要字段必须提供set方法才能够,而使用@Value注解修饰的字段不须要提供set方法
2.绑定的时候导入下面依赖代码自动提示
3.两种方式比较
4.将上面yml文件的person配置换成properties配置,一样绑定成功
上面两种方式读取的配置文件默认都是全局的即application配置文件,可是全部的配置都写在全局配置文件中就显得很乱,能够单独本身的配置文件,使用@PropertySource注解
经常使用的随机数
当咱们的应用须要部署到不一样的运行环境时,一些配置细节一般会有所不一样,最简单的好比日志,生产环境下会将日志级别设置为warn或者更高级别的,并将日志写入日志文件,可是开发环境下须要将日志级别设置为DUBUG,日志输出到控制台便可,若是按照之前的作法,每次发布的时候替换掉配置文件,这样太麻烦了Springboot的Profile就解决了这一问题,命令带参数就搞定
以下图咱们能够针对不一样环境定义对应的配置文件
在主配置文件中经过spring.profiles.active=dev或者spring.profiles.active=pro选择便可
除了上面这种选择性引入对应的配置文件,常见的其余几种方式以下
1.运行的时候Edit配置文件
2.打包项目的时候
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
项目打包好之后,咱们可使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默
认加载的这些配置文件共同起做用造成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
这种写法会造成互补配置,特别是在运维的时候,能够运行的时候使用外部一些配置。
好比我在服务器发布了项目wxcrawler
要使用外置配置文件就很简单了,在jar所在目录新建config文件夹,而后放入配置文件,或者直接放配置文件在jar目录
咱们回顾目录4的知识,能够看到咱们在配置文件中配置了Person相关属性的值,要想使用这些值必需定义一个Person的组件,可是咱们直接可使用相似server.port=8080相关的配置,而不用定义相关的组件类,由于boot已经帮咱们定义了常见的组件配置类,咱们只需定义这配置类的属性值,会自动绑定。那咱们到底能够配置哪些相似server.port=8080参数呢,能够查看官网说明
公众号 java一号 更多java实战项目资料、技术干活。更重要的是小猿愿成为你编程路上的一个朋友!
用心写好每一篇文章,真心对待每个读者
文章首发地址: www.javayihao.top
首发公众号: java一号