• 玩转springboot之springboot配置文件


    springboot配置文件

    虽然springboot提供了一系列的默认配置,但是还是需要使用配置文件来进行一些自定义的配置

    springboot中配置文件名称叫做application.properties或者application.yml

    配置文件加载顺序

    springboot 启动会扫描以下位置的application.properties/yml文件作为Spring boot的默认配置文件

    • file:./config/ 当前项目根目录下的config目录下

    • file:./ 当前项目根目录下

    • classpath:/config/ 项目resources目录下的config目录下

    • classpath:/ 项目resources目录下

    优先级由高到底,高优先级的配置会覆盖低优先级的配置,SpringBoot会从这四个位置全部加载主配置文件

    也可以使用命令行启动项目时通过spring.config.location来改变默认的配置文件位置,多个路径使用逗号隔开,可以使用-spring.config.name来指定文件的名字

    指定外部配置文件

    可以使用@PropertySource来指定除默认配置文件之外的配置

    @PropertySources(
            {
                    @PropertySource(value = "classpath:test.properties")
            }
    )
    @Configuration
    public class MainConfig4 {

    }

    自定义配置

    对于自定义的配置,可以使用@ConfigurationProperties标注所属类来进行与配置文件映射,当然映射的前提是这个类要交由spring ioc容器进行管理,所以首先要将该类作为组件进行注册

    @Component
    @ConfigurationProperties(prefix = "custom")
    public class CustomConfig {

        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    这样做虽然可以正常的获取配置,但是在进行配置的时候发现在进行配置的时候没有提示,凭什么人家的有提示,我的没有

    加上这个依赖

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-configuration-processorartifactId>
        <optional>trueoptional>
    dependency>

    进行自定义类配置时也如德芙巧克力般丝滑了

    这种方式默认是针对于默认的配置文件的,如果不想在默认配置文件中进行配置的话,还需要加上spring的@PropertySource注解来标明所对应的配置文件

    bootstrap和application两种配置文件的区别

    在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application,application 配置文件主要用于 Spring Boot 项目的自动化配置;bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 application

    • bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性
    • bootstrap 里面的属性会优先于application加载,且默认不能被本地相同配置覆盖

    bootstrap应用场景

    • 使用spring cloud config配置中心时,需要在bootstrap中配置配置中心相关属性
    • 配置一些固定不能被覆盖的属性

    配置加载加载顺序

    优先级从上到下

    • 命令行参数
    • 来自java:comp/env的JNDI属性
    • java系统属性
    • 操作系统环境变量
    • RandomValuePropertySource配置的random.*属性值
    • jar包外部的application-{profile}.properties
    • jar包内部的application-{profile}.properties
    • jar包外部的application.properties
    • jar包内部的application.properties
    • @Configuration注解类上的@PropertySource
    • 通过SpringApplication.setDefaultProperties指定的默认属性

    https://zhhll.icu/2021/框架/springboot/基础/2.配置文件/

    本文由 mdnice 多平台发布

  • 相关阅读:
    基于Python的超市管理系统毕业设计源码111042
    easylogging++ 使用笔记(ubuntu 20.04)
    Linux 解决wine启动winedows程序无法显示中文
    C++单调向量算法:132模式枚举1简洁版
    14天阅读挑战赛(趣学算法)笔记1
    Linux——进程控制
    基于springboot实现音乐网站与分享平台项目【项目源码+论文说明】计算机毕业设计
    [笔记]机器学习之前言介绍
    Google Chrome(谷歌浏览器)安装使用
    怎么给视频加配音?试试这些制作方法吧
  • 原文地址:https://blog.csdn.net/Lxn2zh/article/details/139981064