SpringBoot配置第二讲
一. @configurationpropertites与@Value()的区别
二. @propertysource与@importresource的区别
@propertysource是查找指定文件。也可以查找多个文件。
@importresource的作用是由于SpringBoot没有Spring的配置文件,即使是我们自己写的配置文件也是不能识别的。想要让Spring的配置文件加载进来,用这个注解一个配置类。
但是我们应该使用SpringBoot的推荐方式也就是注解方式,创建一个配置类。替代之前的配置文件
配合上面两个注解使用,先注册bean在写配置类。
三. 配置文件占位符
1. 获取随机数
2. 获取默认值
四. Profile
多profile用来多环境下的多个配置文件进行选择时,比如(设置多个端口,看一下,程序怎么选择)
这是多个配置文件的端口设置,运行后,配置默认为application.properties文件中的内容,但是可以默认的进行设置在application.properties文件里加入
Spring.profiles.active=dev 那么这样默认启动的就是application-dev.properties文件
五. yml文档块语法解决多环境配置文件选择
用—代表一个文档块的语法,上面是总的配置,对下面进行选择,不配置active的话默认的是8082.
六. 命令行执行多环境配置文件
1. 在编译器上 第一步
第二步骤
找到program argument 输入–spring.profiles.active=dev
2. 打jar包,自己打,打完以后在你项目的target的文件夹下,找到复制路径后打开命令行,进 去target目录下,输入 java -jar jar名字 --spring.profiles.active=dev
那么启动的就是dev模式。
3. 虚拟机模式启动
与步骤一同,就是在步骤二找的不再是program argument而是 VM options,加入固定写法 -Dspring.profiles.active=dev
七. SpringBoot文件加载位置
springboot启动时候回默认扫描, application.properties application.yml作为Springboot的默认配置文件,除此之外,还可以放到这四个也是系统会加载的地方
file:是当前路径 classpath: 类路径,并且优先级是丛上到下依次递减,如果两个文件夹下 有相同的配置,优先级高的会覆盖掉优先级低的。
按照优先级执行的端口应该是 8084
结论正确。其中springboot的项目无论怎么样这四个目录下的文件都会去加载,不是优先级高的加载后就不在加载,这样的好处是有一种互补配置,讲一下互补配制在。
在低优先级加一句配置。配置项项目名。
server.context-path=/boot04
Controller
这就是互补配置。
还有一种方式修改配置是先打jar包 ,jar打好以后进去target下的路径java -jar jar包名字 --spring.config.location=加上磁盘位置,前提是把你的写好的配置文件 保存到磁盘的位置。
八. 外部配置的加载顺序。
1. 命令行参数
2. 来自java:comp/env的JDNI属性
3. 来自java系统属性(System.getProperties())
4. 操作系统环境变量
5. RandomValuePropertySource配置Random.*的属性值。
再加上