SpringBoot的核心配置文件用于配置SpringBoot程序,名字必须以application开始.
1.properties文件(默认采用该文件)
在002-springboot-springmvc项目基础上,进行修改
项目名称:003-springboot-port-context-path
通过修改application.properties配置文件,在修改默认tomcat端口号及项目上下文件根
键值对的properties属性文件配置方式
#设置内嵌Tomcat端口号server.port=9090#配置项目上下文根server.servlet.context-path=/003-springboot-port-context-path配置完毕之后,启动浏览器测试
页面显示结果
2.yml文件
项目名称:005-springboot-yml,在004项目基础之上
yml是一种yaml格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。
yaml是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml类似于xml,但是语法比xml简洁很多,值与前面的冒号配置项必须要有一个空格,yml后缀也可以使用yaml后缀
注意:当两种格式配置文件同时存在,使用的是.properties配置文件,为了演示yml,可以先将其改名,重新运行Application,查看启动的端口及上下文根。
我们以后在授课的过程中,使用properties,所以演示完yml效果后,将该配置文件改名
在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot提供了多环境配置,具体步骤如下:
项目名称:006-springboot-multi-environment
1.为每个环境创建一个配置文件,命名必须以application-环境标识.properties|yml
application-dev.properties
#开发环境#设置内嵌Tomcat默认端口号server.port=8080#设置项目的上下文根server.servlet.context-path=/006-springboot-multi-environment-devapplication-product.properties
#生产环境#配置内嵌Tomcat默认端口号server.port=80#配置项目上下文根server.servlet.context-path=/006-springboot-multi-environment-productapplication-test.properties
#测试环境#配置内嵌Tomcat端口号server.port=8081#配置项目的上下文根server.servlet.context-path=/006-springboot-multi-environment-test●在总配置文件application.properties进行环境的激活
#SpringBoot的总配置文件#激活开发环境#spring.profiles.active=dev#激活测试环境#spring.profiles.active=test#激活生产环境spring.profiles.active=product等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根。
在SpringBoot的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用如下注解去读取配置的属性值。
1.@Value注解
项目名称:007-springboot-custom-configuration
用于逐个读取application.properties中的配置
案例演示
①在核心配置文件applicatin.properties中,添加两个自定义配置项school.name和school.website。在IDEA中可以看到这两个属性不能被SpringBoot识别,背景是桔色的。
②在SpringBootController中定义属性,并使用@Value注解或者自定义配置值,并对其方法进行测试
/***ClassName:SpringBootController*Package:com.bjpowernode.springboot.web*Description:*/@ControllerpublicclassSpringBootController{@Value("${school.name}")privateStringschoolName;@Value("${school.websit}")privateStringschoolWebsit;@RequestMapping(value="/springBoot/say")public@ResponseBodyStringsay(){returnschoolName+"------"+schoolWebsit;}}③重新运行Application,在浏览器中进行测试
2.@ConfigurationProperties
项目名称:008-springboot-custom-configuration
将整个文件映射成一个对象,用于自定义配置项比较多的情况
①在com.bjpowernode.springboot.config包下创建ConfigInfo类,并为该类加上Component和ConfigurationProperties注解,prefix可以不指定,如果不指定,那么会去配置文件中寻找与该类的属性名一致的配置,prefix的作用可以区分同名配置
/***ClassName:ConfigInfo*Package:com.bjpowernode.springboot.config*Description:*/@Component@ConfigurationProperties(prefix="school")publicclassConfigInfo{privateStringname;privateStringwebsit;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetWebsit(){returnwebsit;}publicvoidsetWebsit(Stringwebsit){this.websit=websit;}}②在SpringBootController中注入ConfigInfo配置类
@AutowiredprivateConfigInfoconfigInfo;③修改SpringBootController类中的测试方法
@RequestMapping(value="/springBoot/configInfo")public@ResponseBodyStringsay(){returnconfigInfo.getName()+"======="+configInfo.getWebsit();}④重新运行Application,在浏览器中进行测试
3.警告解决
①在ConfigInfo类中使用了ConfigurationProperties注解后,IDEA会出现一个警告,不影响程序的执行
②点击opendocumentnation跳转到网页,在网页中提示需要加一个依赖,我们将这个依赖拷贝,粘贴到pom.xml文件中
!--解决使用@ConfigurationProperties注解出现警告问题-->
如果在SpringBoot核心配置文件中有中文信息,会出现乱码:
?一般在配置文件中,不建议出现中文(注释除外)
?如果有,可以先转化为ASCII码
5.友情提示
大家如果是从其它地方拷贝的配置文件,一定要将里面的空格删干净。