@Value与@ConfigurationProperties
我们现在除了使用@ConfigurationProperties(prefix=“person”)这样的方式将配置文件中的内容设置到类中的属性以外,我们还可以使用另外的方式。
我们还可以使用Spring给我们提供的一个底层的注解@Value
@Value与@ConfigurationProperties的区别:
@Value @ConfigurationProperties
功能:
只能一个一个的设置 可以完成批量的设置
松散的语法:
不支持 支持
复杂类型的封装
不支持 支持
JSR303语法校验
不支持 支持
什么是松散的语法?
属性名的匹配的规则
person.firstName:标准的方式
person.first-name:大写用-
person.first_name:大写用_
如果我们只需要自动配置某一个简单的值,我们可以使用@Value
如果我们需要将一组值配置到某一个类中,我们使用@ConfigurationProperties
@PropertySource与@ImportResource
@PropertySource:主要的作用是加载外部的配置文件并且只能加载.properties后缀名的文件。
@ImportResource:导入Spring的配置文件,让配置文件的内容生效
注意:我们使用@ImportResource注解的方式加载Spring的配置文件这样的方式,是SpringBoot不推荐的方式。SpringBoot推荐的方式是使用全注解的方式加载。
配置文件的占位符:
1.随机数:配置文件中可以使用随机数
${random.value}
${random.int}
${random.long}
${random.int(10)}
${random.int[1024,65535]}
2.属性配置占位符
可以在配置文件中引用配置过的属性
${配置过的属性:默认值}
Profile:
Profile是SpringBoot对不同环境提供的不同配置功能的支持,通过激活、指定参数等方式可以快速的切换环境。
1.多Profile文件形式:
格式:
application-{profile名称}.proeprties
2.多Profile文档块模式
server:
port: 9090
---
spring:
profiles: dev
server:
port: 9191
---
spring:
profiles: prod
server:
port: 9292
3.激活方式:
-配置文件激活:spring.profiles.active=porfile名称
-运行参数的模式进行激活:右键项目名–>run as–>run configuration–>aruguments–>program aguments–>-- spring.profiles.active
-命令行:
首先打包程序–>启动命令提示符窗口–>输入java -jar -文件名称 -spring.profiles.active=prod
配置文件的加载位置:
SpringBoot启动会扫描以下的位置的application.properties或者application.yml文件作为SpringBoot的默认的配置文件
1.file:/config/
2.file:
3.classpath:/config
4.classpath:
SpringBoot会按照以上的优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置的内容会将第优先级配置的内容进行覆盖。
外部配置加载顺序:
SpringBoot支持多种外部配置方式:
1.命令行参数
2.来自java:comp/env的JNDI属性
3.Java系统属性
4.操作系统的环境变量
5.jar包外部的application-{profile}.properties或者是application.yml(带有srping.profile)配置文件
6.jar包内部的application-{profile}.properties或者是application.yml(带有srping.profile)配置文件
7.jar包外部的application-{profile}.properties或者是application.yml(不带有srping.profile)配置文件
8.jar包内部的application-{profile}.properties或者是application.yml(不带有srping.profile)配置文件