• 03_SpingBoot 核心配置文件


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

    1. 核心配置格式

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

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

    SpringBootController

    1. import org.springframework.stereotype.Controller;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. import org.springframework.web.bind.annotation.ResponseBody;
    4. @Controller
    5. public class SpringBootController {
    6. @RequestMapping(value = "/springBoot/say")
    7. @ResponseBody
    8. public String say() {
    9. return "Hello,springBoot!";
    10. }
    11. }

    application.properties 

    键值对的properties属性文件配置方式

    1. #配置端口
    2. server.port=9001
    3. #配置站点名称
    4. server.servlet.context-path=/001-springboot-first

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

    (2).yml文件

    yml文件和properties文件没有任何区别,只是不同配置方式而已。

    yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置

    yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀

     SpringBootController

    1. import org.springframework.stereotype.Controller;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. import org.springframework.web.bind.annotation.ResponseBody;
    4. @Controller
    5. public class SpringBootController {
    6. @RequestMapping(value = "/springBoot/say")
    7. @ResponseBody
    8. public String say() {
    9. return "Hello,springBoot!";
    10. }
    11. }

    application.yml​​​​​​​

    1. server:
    2. port: 8001
    3. servlet:
    4. context-path: /001-springboot-first

    注意:当两种格式配置文件同时存在,使用的是.properties配置文件,为了演示yml,可以先将其改名,重新运行Application,查看启动的端口及上下文根 

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

    ​​​​​​​2. 多环境配置

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

    SpringBootController

    1. import org.springframework.stereotype.Controller;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. import org.springframework.web.bind.annotation.ResponseBody;
    4. @Controller
    5. public class SpringBootController {
    6. @RequestMapping(value = "/springBoot/say")
    7. @ResponseBody
    8. public String say() {
    9. return "Hello,springBoot!";
    10. }
    11. }

    application.properties 

    等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根目录

    1. #激活环境配置
    2. spring.profiles.active=dev

    application-dev.properties 

    1. #开发环境核心配置文件
    2. server.port=7001
    3. server.servlet.context-path=/001-springboot-first

    application-product.properties 

    1. #生产环境核心配置文件
    2. server.port=6001
    3. server.servlet.context-path=/001-springboot-first

    application-test.properties 

    1. #测试环境核心配置文件
    2. server.port=5001
    3. server.servlet.context-path=/001-springboot-first

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

    ​​​​​​​​​​​​​​3. Spring Boot自定义配置

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

    ​​​​​​​(1)@Value注解

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

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

    SpringBootController 

    1. @Controller
    2. public class SpringBootController {
    3. @Value("${school.name}")
    4. private String schoolName;
    5. @Value("${school.webSite}")
    6. private String schoolWebsite;
    7. @RequestMapping(value = "/springBoot/say")
    8. @ResponseBody
    9. public String say() {
    10. return "Hello,springBoot!--->" + schoolName + "-->" + schoolWebsite;
    11. }
    12. }

    application.properties 

    等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根目录

    1. #激活环境配置
    2. spring.profiles.active=dev

    application-dev.properties 

    1. #开发环境核心配置文件
    2. server.port=7001
    3. server.servlet.context-path=/001-springboot-first

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

    (2)​​​​​​​​​​​​​​@ConfigurationProperties

    ConfigInfo

    1. import org.springframework.boot.context.properties.ConfigurationProperties;
    2. import org.springframework.stereotype.Component;
    3. @ConfigurationProperties(prefix = "school")
    4. @Component
    5. public class ConfigInfo {
    6. private String name;
    7. private String website;
    8. public ConfigInfo() {
    9. }
    10. public String getName() {
    11. return name;
    12. }
    13. public void setName(String name) {
    14. this.name = name;
    15. }
    16. public String getWebsite() {
    17. return website;
    18. }
    19. public void setWebsite(String website) {
    20. this.website = website;
    21. }
    22. @Override
    23. public String toString() {
    24. return "ConfigInfo{" +
    25. "name='" + name + '\'' +
    26. ", website='" + website + '\'' +
    27. '}';
    28. }
    29. }

    SpringBootController 

    1. @Controller
    2. public class SpringBootController {
    3. @Autowired
    4. ConfigInfo configInfo;
    5. @Value("${school.name}")
    6. private String schoolName;
    7. @Value("${school.webSite}")
    8. private String schoolWebsite;
    9. @RequestMapping(value = "/springBoot/say")
    10. @ResponseBody
    11. public String say() {
    12. return "Hello,springBoot!--->" + schoolName + "-->" + schoolWebsite + "-->" + configInfo;
    13. }
    14. }

    application.properties 

    等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行Application,查看启动的端口及上下文根目录

    1. #激活环境配置
    2. spring.profiles.active=dev

    application-dev.properties 

    1. #开发环境核心配置文件
    2. server.port=7001
    3. server.servlet.context-path=/001-springboot-first

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

    ConfigInfo 爆红问题 解决

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-configuration-processor</artifactId>
    4. <optional>true</optional>
    5. </dependency>
  • 相关阅读:
    【vue-router 路由篇】 传入私有数据给目标路由地址而不显示在url上
    Flask 学习-51.Flask-RESTX 生成 Swagger 文档 详细教程
    XSS 从 PDF 中窃取数据
    如何进行性能评估
    14:00面试,14:06就出来了,问的问题有点变态。。。
    SpringCloud +UniApp技术开发saas模式的智慧工地云平台源码,支持可视化大屏端、手机端、平板端、PC端
    微服务架构推动精益数字化管理体系建设,构建大数据分析平台
    华为L410上制作内网镜像模板02
    leetcode 830. 较大分组的位置、831. 隐藏个人信息、829. 连续整数求和、828. 统计子串中的唯一字符
    【Kolla-ansible 16.1.0.dev156】部署/评估快速入门(报错的文章,后面不用看了)
  • 原文地址:https://blog.csdn.net/qq_45037155/article/details/125405425