# Spring Boot的配置文件和自动配置原理 ##

Spring Boot的配置文件和自动配置原理

使用Spring Initializer快速创建Spring Boot项目

1.首先用SpringInitializer快速创建一个父项目maven,然后在父项目里面创建一个子项目。

2.由于是子项目继承的是父项目,因此要在子项目里面的pom里面修改parent属性。

spring_initializer ----> spring_parent ---->spring-boot-starter-parent

修改后:

遇到的问题:

解决办法:想要继承springboot的父项目,需要用springboot的group。

遇到问题:

解决办法:把父工程的打包方式改成pom <packaging>pom</packaging>

意味着它不是一个具体的项目,只是为了继承

3.子工程的目录

HelloControler:

@RestController
@RequestMapping("/hello")
public class HelloControler {    
//处理映射    
@RequestMapping("/ini")    
//映射处理方法    
    public String sayHi(){        
    return "Hello SpringBoot";    
    }
}

遇到问题:springboot版本与jdk版本不匹配的问题

解决办法:降低parent里面springboot的版本设置为2.3.5.RELEASE

运行结果

自定义SpringApplication (了解)

SpringApplication调用静态run()方法来启动spring的应用,还可以调用实例的其他方法来完成springboot的其他功能,例如添加监听器等。

创建一个本地实例并对其进行自定义,使其实例化

例如关闭横幅

配置文件的使用

在springboot里面约定大于配置,因此配置文件是有固定格式的。

3.1配置文件的介绍

  • 在SpringBoot里面使用一个全局配置文件 核心配置文件,配置文件名在约定的情况下名字是固定的。

  • 配置文件的作用:修改springboot自动配置的默认值;springboot在底层都给我们自动配置好的;

3.2两种常用配置文件的格式

  • application.properties的用法:扁平的k/v格式

  • applicayion.yml:树形结构

    可读性和约束性更强

3.3配置文件的加载顺序

每个springboot版本不同,其优先级也是不同的。

如果这三个配置里面都有相同的配置,按读取优先级来进行读取,如果是三个配置中只有一个,则互补配置。

补充:spring-boot-starter-parent 是父springboot项目中的父maven项目;

spring-boot-starter-parent是继承spring-boot-dependencies;

spring-boot-denpendencies是版本仲裁库,维护了springboot中所有的自动配置的第三方库的所有的版本的版本号。

遇到问题:启动不了springboot

解决办法:yml和yaml的配置文件格式不对导致的。把yml和yaml更改为正确的配置格式

其他约定配置文件加载顺序

外部约定配置文件加载的顺序(由低到高)

resource文件里面内容编译后进入到class里面的根目录,因此,classpath根目录=resource的根目录

  1. .classpath根目录下的

  2. classpath根目录下面的config

  3. 项目根目录:如果当前项目是继承/耦合关系Maven项目,项目根目录=父maven项目根目录(不常用)

  4. 项目根目录/config(不常用)

  5. 直接子目录/config

总结:

一般来说,我们通常使用1,2,5。当有config时,config里面的优先,然后再看config里面同级的,也遵循互补原则。

profile配置文件的加载顺序

Profile的意思是配置,对于应用程序来说,不同的环境需要不同的配置。

SpringBoot框架提供了多profile的管理功能,我们可以使用profile功能来区分不同环境的配置。

1.多file文件

官方给出的语法规则:application-xxx.properties/yaml/yml

开发环境时开发环境的配置

生产环境时生产环境的配置。

2.激活profile

在application.properties加入以下内容

spring.profiles.active=dev

先按照位置来读取优先级,在同一位置下profile优先级最高,如果没有指定profil,先yml--yaml--propertices

  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值