Spring Boot 的核心配置文件用于配置Spring Boot 程序,名字必须以 application 开始

1. 核心配置格式

(1).properties文件(默认采用该文件)


通过修改application.properties配置文件,在修改默认tomcat端口号及项目上下文件根(站点)

springboot核心依赖jar包 springboot核心配置文件_spring

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

springboot核心依赖jar包 springboot核心配置文件_spring boot_02

(2).yml文件

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,查看启动的端口及上下文根

springboot核心依赖jar包 springboot核心配置文件_spring boot_03

启动测试 --》页面显示结果 localhost:8001/001-springboot-first/springBoot/say

springboot核心依赖jar包 springboot核心配置文件_spring boot_04

2. 多环境配置

在实际开发的过程中,我们的项目会经历很多的阶段(开发 --> 测试 --> 上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot提供了多环境配置,具体步骤如下

springboot核心依赖jar包 springboot核心配置文件_前端_05

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核心依赖jar包 springboot核心配置文件_java_06

3. Spring Boot自定义配置

在SpringBoot的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用如下注解去读取配置的属性值

(1)@Value注解

在核心配置文件applicatin.properties中,添加两个自定义配置项school.name和school.webSite。在IDEA中可以看到这两个属性不能被SpringBoot识别,背景是桔色的

在SpringBootController中定义属性,并使用@Value注解或者自定义配置值,并对其方法进行测试

springboot核心依赖jar包 springboot核心配置文件_前端_07

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

springboot核心依赖jar包 springboot核心配置文件_java_08

(2)@ConfigurationProperties

springboot核心依赖jar包 springboot核心配置文件_前端_09

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

springboot核心依赖jar包 springboot核心配置文件_前端_10

ConfigInfo 爆红问题 解决

springboot核心依赖jar包 springboot核心配置文件_spring_11

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>