关于Spring boot配置文件(properties/yml)
1.读取spring配置的方法
有两种,一种是通过写bean XML文件,然后在入口类中注解@ImportResource来引入bean文件的方式。然而这种方式并不方便

具体实现可以参考这篇博文:
https://blog.youkuaiyun.com/wangmx1993328/article/details/81005170
一种是通过全注解方式引入spring配置文件来添加组件。SpringBoot推荐给容器中添加组件使用该种方式。这种方式也是spring注解的传统方式
首先需要定义一个配置类,然后配置类需要添加注解:类需要注解为@Configurantion 需要用到的组件注解为@Bean

注意:这两种添加容器组建的方式不能同时存在,不然会报错。
@Configuration声明该类需要被初始化(也就是项目启动的时候,该类中的方法就已经被执行),@Bean要跟@Configuration搭配使用
@Bean的作用:初始化的时候创建对象,并放到IOC容器中。
2.关于profiles多环境配置
(1)我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;也就是说不管application文件是否有后缀profile,都先于yml执行。
(2)yml比properties文件更方便,可以支持多文档块。比如:

(3)激活指定的profile文件:
三个办法:
- 配置文件中激活:spring.profiles.active=dev //注意application.properties及yml的优先级
- 在命令行中激活: 打包后,运行java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;或在IDEA中的窗口中配置如下:点击Edit Configurations...——》Configuration选项卡下的Program arguments中输入命令: --spring.profiles.active=dev 命令行方式优先级高于在配置文件中激活的方法
-
虚拟机参数激活: -Dspring.profiles.active=dev


3.关于profiles文件的加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/ 指的是工程根目录下的config文件夹下 打包时不会被打包进去
–file:./ 指的是工程根目录下 打包时不会被打包进去
–classpath:/config/ 指的是resources下的config文件夹下
–classpath:/ 指的是resources下
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置;
除了上述几个固定位置以外,还可以自定义位置,通过spring.config.location来改变默认的配置文件位置,这通常用在项目已经打包好了,但想要改变某些配置时,另写一个properties文件,里面重新配置。然后在运行jar包时后面带命令行参数来指定先加载这个配置文件。
例如可以这么写:java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;
注意:springboot 2.0之后,项目访问路径配置由原来的server.context-path改为 server.servlet.context-path
4.关于profiles文件的加载顺序:高优先级配置覆盖低优先级配置,所有内容形成互补
a.命令行参数
所有的配置都可以在命令行上进行指定
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
多个配置用空格分开; --配置项=值
b.来自java:comp/env的JNDI属性
c.Java系统属性(System.getProperties())
d.操作系统环境变量
e.RandomValuePropertySource配置的random.*属性值
f.由jar包外向jar包内进行寻找;
优先加载带profile的(前提是该profile被激活)
- jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件(config路径下的profile优先加载,之后是jar同级目录下的profile)
- jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件(config路径下的profile优先加载,之后是jar同级目录下的profile)
再来加载不带profile
- jar包外部的application.properties或application.yml(不带spring.profile)配置文件(config路径下的profile优先加载,之后是jar同级目录下的profile)
- jar包内部的application.properties或application.yml(不带spring.profile)配置文件(config路径下的profile优先加载,之后是jar同级目录下的profile)
g.@Configuration注解类上的@PropertySource
h.通过SpringApplication.setDefaultProperties指定的默认属性
所有支持的配置加载来源;
5.自动配置原理
配置文件可以配置的属性参考文档:1.5.9配置文件属性
本文深入解析SpringBoot配置机制,涵盖配置文件读取方法、多环境配置策略、配置加载位置与顺序,以及自动配置原理,帮助开发者掌握核心配置技巧。
879

被折叠的 条评论
为什么被折叠?



