Spring Boot的核心配置文件用于配置Spring Boot程序,名字必须以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-dev
application-product.properties
#生产环境
#配置内嵌Tomcat默认端口号
server.port=80
#配置项目上下文根
server.servlet.context-path=/006-springboot-multi-environment-product
application-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:
*/
@Controller
public class SpringBootController {
@Value("${school.name}")
private String schoolName;
@Value("${school.websit}")
private String schoolWebsit;
@RequestMapping(value = "/springBoot/say")
public @ResponseBody String say() {
return schoolName + "------" + 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")
public class ConfigInfo {
private String name;
private String websit;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWebsit() {
return websit;
}
public void setWebsit(String websit) {
this.websit = websit;
}
}
② 在SpringBootController中注入ConfigInfo配置类
@Autowired
private ConfigInfo configInfo;
③ 修改SpringBootController类中的测试方法
@RequestMapping(value = "/springBoot/configInfo")
public @ResponseBody String say() {
return configInfo.getName() + "=======" + configInfo.getWebsit();
}
④ 重新运行Application,在浏览器中进行测试
3. 警告解决
① 在ConfigInfo类中使用了ConfigurationProperties注解后,IDEA会出现一个警告,不影响程序的执行
② 点击open documentnation跳转到网页,在网页中提示需要加一个依赖,我们将这个依赖拷贝,粘贴到pom.xml文件中
!--解决使用@ConfigurationProperties注解出现警告问题-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4. 中文乱码
如果在SpringBoot核心配置文件中有中文信息,会出现乱码:
• 一般在配置文件中,不建议出现中文(注释除外)
• 如果有,可以先转化为ASCII码
5. 友情提示
大家如果是从其它地方拷贝的配置文件,一定要将里面的空格删干净。