Spring Boot 的核心配置文件用于配置Spring Boot 程序,名字必须以 application 开始
通过修改application.properties配置文件,在修改默认tomcat端口号及项目上下文件根(站点)
SpringBootController
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- @Controller
- public class SpringBootController {
- @RequestMapping(value = "/springBoot/say")
- @ResponseBody
- public String say() {
- return "Hello,springBoot!";
- }
- }
application.properties
键值对的properties属性文件配置方式
- #配置端口
- server.port=9001
-
- #配置站点名称
- server.servlet.context-path=/001-springboot-first
启动测试 --》页面显示结果 localhost:9001/001-springboot-first/springBoot/say
yml文件和properties文件没有任何区别,只是不同配置方式而已。
yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。
yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀
SpringBootController
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- @Controller
- public class SpringBootController {
- @RequestMapping(value = "/springBoot/say")
- @ResponseBody
- public String say() {
- return "Hello,springBoot!";
- }
- }
application.yml
- server:
- port: 8001
- servlet:
- context-path: /001-springboot-first
注意:当两种格式配置文件同时存在,使用的是.properties配置文件,为了演示yml,可以先将其改名,重新运行Application,查看启动的端口及上下文根
启动测试 --》页面显示结果 localhost:8001/001-springboot-first/springBoot/say
在实际开发的过程中,我们的项目会经历很多的阶段(开发 --> 测试 --> 上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot提供了多环境配置,具体步骤如下
SpringBootController
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- @Controller
- public class SpringBootController {
- @RequestMapping(value = "/springBoot/say")
- @ResponseBody
- public String say() {
- return "Hello,springBoot!";
- }
- }
application.properties
等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根目录
- #激活环境配置
- spring.profiles.active=dev
application-dev.properties
- #开发环境核心配置文件
- server.port=7001
- server.servlet.context-path=/001-springboot-first
application-product.properties
- #生产环境核心配置文件
- server.port=6001
- server.servlet.context-path=/001-springboot-first
application-test.properties
- #测试环境核心配置文件
- server.port=5001
- server.servlet.context-path=/001-springboot-first
启动测试 --》页面显示结果 localhost:7001/001-springboot-first/springBoot/say
在SpringBoot的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用如下注解去读取配置的属性值
在核心配置文件applicatin.properties中,添加两个自定义配置项school.name和school.webSite。在IDEA中可以看到这两个属性不能被SpringBoot识别,背景是桔色的
在SpringBootController中定义属性,并使用@Value注解或者自定义配置值,并对其方法进行测试
SpringBootController
- @Controller
- public class SpringBootController {
-
- @Value("${school.name}")
- private String schoolName;
-
- @Value("${school.webSite}")
- private String schoolWebsite;
-
- @RequestMapping(value = "/springBoot/say")
- @ResponseBody
- public String say() {
- return "Hello,springBoot!--->" + schoolName + "-->" + schoolWebsite;
- }
- }
application.properties
等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根目录
- #激活环境配置
- spring.profiles.active=dev
application-dev.properties
- #开发环境核心配置文件
- server.port=7001
- server.servlet.context-path=/001-springboot-first
启动测试 --》页面显示结果 localhost:7001/001-springboot-first/springBoot/say
ConfigInfo
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
-
- @ConfigurationProperties(prefix = "school")
- @Component
- public class ConfigInfo {
- private String name;
- private String website;
-
- public ConfigInfo() {
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getWebsite() {
- return website;
- }
-
- public void setWebsite(String website) {
- this.website = website;
- }
-
- @Override
- public String toString() {
- return "ConfigInfo{" +
- "name='" + name + '\'' +
- ", website='" + website + '\'' +
- '}';
- }
- }
SpringBootController
- @Controller
- public class SpringBootController {
-
- @Autowired
- ConfigInfo configInfo;
-
- @Value("${school.name}")
- private String schoolName;
-
- @Value("${school.webSite}")
- private String schoolWebsite;
-
- @RequestMapping(value = "/springBoot/say")
- @ResponseBody
- public String say() {
- return "Hello,springBoot!--->" + schoolName + "-->" + schoolWebsite + "-->" + configInfo;
- }
- }
application.properties
等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根目录
- #激活环境配置
- spring.profiles.active=dev
application-dev.properties
- #开发环境核心配置文件
- server.port=7001
- server.servlet.context-path=/001-springboot-first
启动测试 --》页面显示结果 localhost:7001/001-springboot-first/springBoot/say
ConfigInfo 爆红问题 解决
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>