第二章
6 配置文件读取
7静态工具类读取配置文件
8 profile
9 热部署
当我们使用spring 初始化器构建完一个Spring Boot项目后,只需引入一个web启动器的依赖,它就变成一个web项目了,而且呢我们 什么都没有配置就能通过localhost:8080进行访问了,那这是为什么呢?
那是因为Spring Boot在底层已经把配置信息都给我们自动配置好了。 那我们怎么去修改默认配置信息?
在使用Spring 初始化器创建一个Springboot项目的时候会在resources目录下自动生成一个文件 application.properties,这是一个空 文件,它的作用是提供我们修改默认配置信息的入口。
Spring Boot还提供给我们另外一种风格的配置文件 application.yml,虽然是两个不同的文件但是本质是一样的,区别只是其中的语法 略微不同。下面我们就来一一介绍一下这两种不同风格的配置文件。
application.properties 配置文件比较简单,形式如下
key = value 不需要空格进行区分,父属性和子属性之间是以“.”进行区分的
空格必须有),以空格的缩进来控制层级关系。我们写一个简单的例子看看它们之间的区别:配置端口号
<server>
<port>8080port>
server>
application.ymlserver:
port: 8080
application.propertiesserver.port=8080
application.properties#基本类型
person.userName=zhangsan
person.age=29
person.salary=22000
person.sex=male
application.yml (和application.properties本质一样 两者选其一 )person:
userName: zhangsan
age: 29
salary: 220000
sex: male
创建 Person javabean
创建 PersonConfig 配置类
创建 SpringBootDemoApplicationTests Junit 单元测试
测试输出
application.Properties#基本类型
person.userName=zhangsan
person.age=29
person.salary=22000
person.sex=male
#array
person.pets=dog,cat
#map
person.friend.userName=wangwu
person.friend.age=28
#list
person.list[0]=value1
person.list[1]=value2
#list嵌套Map/对象
person.children[0].name=ting
person.children[0].weight=2
person.children[1].name=hao
person.children[1].weight=5
#对象嵌套对象
person.employee.name=lisi
person.employee.age=21
application.ymlperson:
userName: zhangsan
age: 29
salary: 220000
sex: male
pets: cat,dog
friend:
userName: wangwu
age: 27
list:
- value1
- value2
children:
- name: ting
weight: 2
- name: hao
weight: 5
employee:
name: lisi
age: 21
@ConfigurationProperties 注解向Spring Boot声明该类中的所有属性和配置文件中相关的配置进行绑定。
prefix = “person”:声明配置前戳,将该前戳下的所有属性进行映射。
@Component 将该组件加入Spring Boot容器,只有这个组件是容器中的组件,配置才生效。
在日常开发中经常会遇到这种情况,就是有一些方法经常用到但是呢又需要外部的一些静态常量(各个环境的值是不一样的)进行组装, 所以呢我们会把这些方法抽出来统一放在一个工具类里面,大家也知道通常来说工具类里面都是一些静态的方法,后续在其它地方使 用的时候直接工具类.方法就可以了。但是呢我们的方法改成静态方法后,里面用到的变量也同样要改成静态的变量,这里就涉及到了 静态属性的注入问题了,如果我们还像上小节那样用 @Value 直接注入是注入不进来的。
那么我们怎么去改造呢?怎么才能把它 注入到静态的变量 呢?好下面我们就来实践一下。
我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、redis地 址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。
对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要 打包的内容之后进行区分打包,而Spring Boot 就更简单了,打好包后,只需在不同的环境下启动时候指定读取的配置文件就可以了。
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile} 值。
如:spring.profiles.active=test就会加载application-test.properties配置文件内容
操作: ctrl + shift + alt + /,选择Registry,勾选勾上 Compiler autoMake allow when app running
重启 IDEA