千家信息网

Spring Boot怎么配置文件类型的properties格式与yml格式

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"Spring Boot怎么配置文件类型的properties格式与yml格式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情
千家信息网最后更新 2026年10月31日Spring Boot怎么配置文件类型的properties格式与yml格式

本篇内容介绍了"Spring Boot怎么配置文件类型的properties格式与yml格式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    一 配置文件类型

    Spring Boot默认支持properties和yml两种格式的配置文件。yml格式是天然的树状接口,相对于properties,yml更加的一目了然。这也是我们推荐的配置文件格式。

    properties 格式举例:

    server.port=8090server.session-timeout=30server.tomcat.max-threads=0server.tomcat.uri-encoding=UTF-8spring.datasource.url=jdbc:mysql://localhost:3306/newbirdsspring.datasource.username=rootspring.datasource.password=mymysqlspring.datasource.driverClassName=com.mysql.jdbc.Driverspring.jpa.database=MYSQLspring.jpa.show-sql=truespring.jpa.hibernate.ddl-auto=updatespring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategyspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

    yml 格式举例:

    server:  port: 8090  session-timeout: 30  tomcat.max-threads: 0  tomcat.uri-encoding: UTF-8spring:  datasource:    url: jdbc:mysql://localhost:3306/newbirds    username: root    password: mymysql    driverClassName: com.mysql.jdbc.Driver  jpa:    database: MYSQL    show-sql: true    hibernate:      ddl-auto: update      naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy    properties:      hibernate:      dialect : org.hibernate.dialect.MySQL5Dialect

    二 配置文件

    2.1 核心配置文件

    Spring Boot默认支持两种核心配置文件:bootstrap.yml(bootstrap.properties)、application.yml(application.properties)。bootsrap先加载。

    2.1.1 bootstrap.yml(bootstrap.properties)

    bootstrap.yml用于应用程序上文的引导节点,由父Spring ApplicationContext加载。我们可以简单的把bootstrap里面的配置信息理解成系统级别的参数。这些参数轻易是不会改变的。

    bootstrap配置文件有以下几个应用场景:

    • 使用Spring Cloud Config的时候,需要将spring.application.name和spring.cloud.config.server.git.uri写入bootstrap.yml。

    • 一些固定的不能被覆盖的属性。

    • 一些加密/解密的场景。会把encryption/decryption(加密/解密)存储在bootstrap.yml里面。

    一旦bootStrap.yml 被加载,则内容不会被覆盖,即便后期加载的application.yml的内容标签与bootstrap的标签一致,application 也不会覆盖bootstrap。

    2.1.2 application.yml(application.properties)

    application.yml是我们用的最多的一个配置文件.一般配置应用级别的配置,比如数据库的连接配置,如果我们用到了redis可能会写一些redis相关的配置等等。

    2.2 自定义配置文件

    为了不破坏核心文件的原生态,但又需要有自定义的配置信息存在,一般情况下会选择自定义配置文件来放这些自定义信息,比如我们在resource目录下创建一个product.properties文件.

    resources/product.properties文件内容如下:

    ppid = 1000mmid = 1ccid = 10

    三 配置文件读取

    3.1 读取核心配置文件信息

    读取核心配置文件信息值的是读取bootstrap.yml(bootstrap.properties)、application.yml(application.properties)文件里面的信息.

    3.1.1 Environment方式

    这种方式是依赖注入Evnironment来完成,在创建的成员变量private Environment env上加上@Autowired注解即可完成依赖注入,然后使用env.getProperty("键名")即可读取出对应的值。比如如下的代码.

    application.yml文件里面添加我们自定义的属性:

    # 自定义的一些属性user:  info:    name: tuacy    age: 27

    Environment方式读取配置信息:

    @RunWith(SpringRunner.class)@SpringBootTest()public class PropertiesTest {    private Environment environment;    @Autowired    public void setEnvironment(Environment environment) {        this.environment = environment;    }    @Test    public void test() {        String name = environment.getProperty("user.info.name");        Integer age = environment.getProperty("user.info.age", Integer.class);        System.out.println("name = " + name + "; age = " + age);            }}
    3.1.2 @Value方式

    在@Value的${}中包含的是核心配置文件中的键名就可以得到对应的值.

    @RunWith(SpringRunner.class)@SpringBootTest()public class PropertiesTest {    @Value("${user.info.name}")    private String name;    @Value("${user.info.age}")    private int age;    @Test    public void test() {        System.out.println("name = " + name + "; age = " + age);    }}
    3.1.3 @ConfigurationProperties方式

    @ConfigurationProperties使用的时候对应的属性类一定要记得加上@Configuration或者在任何一个配置类(推荐启动类上)通过@EnableConfigurationProperties注解指定自定义的属性类.推荐直接在属性类上添加@Configuration注解.

    @Configuration@ConfigurationProperties(prefix = "user.info")public class UserInfo {    private int age;    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

    3.2 读取自定义配置文件信息

    3.2.1 @PropertySource + @Value

    @PropertySource + @Value使用于读取property根式配置文件的信息.@PropertySource指定配置文件路径和编码格式,@Value指定配置文件里面的key值.

    自定义的配置文件 product.properties:

    ppid = 1000mmid = 1ccid = 10

    对应的读取方式:

    @Configuration@PropertySource(value = "classpath:product.properties", encoding = "utf-8")public class ProductInfo {    @Value("${ppid}")    private int pid;    @Value("${mmid}")    private int mid;    @Value("${ccid}")    private int cid;    public int getPid() {        return pid;    }    public void setPid(int pid) {        this.pid = pid;    }    public int getMid() {        return mid;    }    public void setMid(int mid) {        this.mid = mid;    }    public int getCid() {        return cid;    }    public void setCid(int cid) {        this.cid = cid;    }}
    3.2.2 @ConfigurationProperties + @PropertySource + @Value

    @ConfigurationProperties + @PropertySource + @Value适用于读取yml格式配置文件信息.@PropertySource指定配置文件路径和编码格式,@ConfigurationProperties和@Value指定配置文件里面的key值.

    配置文件:

    admin:  user:    name: tuacy    age: 25

    对应配置文件的读取方式:

    @Configuration@PropertySource(value = "classpath:role.yml")@ConfigurationProperties(prefix = "admin.user")public class RoleUserInfo {    @Value("${name}")    private String name;    @Value("${age}")    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

    四 配置文件的加载顺序

    优先级由高到底,高优先级的配置会覆盖低优先级的配置,
    全部加载配置文件并互补配置.

    4.1 项目内部配置文件加载顺序

    SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。可放置目录(优先级从高到低)

    • 当前项目根目录下的config目录下。

    • 当前项目根目录下。

    • resources目录下的config目录下。

    • resource目录下。

    4.2 项目外部配置文件加载顺序

    优先级由高到低:

    • 命令行参数

    • 来自java:comp/env的JNDI属性

    • Java系统属性(System.getProperties())

    • 操作系统环境变量

    • RandomValuePropertySource配置的random.*属性值

    • jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    • jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    • jar包外部的application.properties或application.yml(不带spring.profile)配置文件

    • jar包内部的application.properties或application.yml(不带spring.profile)配置文件

    • @Configuration注解类上的@PropertySource

    • 通过SpringApplication.setDefaultProperties指定的默认属性

    "Spring Boot怎么配置文件类型的properties格式与yml格式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

    配置 文件 格式 信息 属性 方式 优先级 核心 目录 内容 注解 路径 项目 类型 参数 系统 顺序 应用 推荐 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 花魁咖啡 广州大一互联网络科技有限公司 国智互联网科技 互联网 科技创业 互联网科技媒体 时间互联网络科技 互联网科技公司有哪些 互联网科技有限公司 翻译 新华互联网科技2019 恒银科技与互联网金融 互联网科技实习生岗位职责 智腾互联网科技有限公司 苏州铭阳互联网科技有限公司 深圳市优智互联网科技有限公司 无锡工业互联网科技有限公司 山东子淼互联网科技有限公司 广东工业互联网大赛深圳学泰科技 版纳互联网科技选哪家 北京军民互联网科技公司 小米移动互联网科技园 华服互联网科技靠谱吗 哈尔滨大商圈互联网科技有限公司 互联网科技公司的优势 金融科技与互联网金融 掌上梦互联网科技 联恩商钥互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 烟台灵鸽互联网科技有限公司 互联网科技自媒体灵感
    0