SpringBoot应用的配置

配置叠加顺序: PropertySourcesPropertyResolver负责从多个PropertySource中解析属性值

命令行参数 (例如:--server.port=7788)
系统属性 (例如:-Dserver.port=7788)
环境变量(例如:SERVER_PORT=7788)(点和减号替换为下划线,全大写) (在docker下,这种方式尤其好用)
application-***.properties或yml (特定环境配置:spring.profiles.active决定)
application.properties或yml(默认配置)
bootstrap.properties或yml(引导配置)
@PropertySource加载的资源(自定义配置)

其中:

application和bootstrap,按3个位置搜索,每个搜索位置如果存在properties、yml文件,则properties在先,yml在后
    config目录
    .当前目录
    classpath:/类路径

配置使用:

注解:@ConfigurationProperties 在IOC的后处理器中,配置对象属性值
    Relaxed Binding机制
注解:@Value(${aaa.bbb:}) 用于Bean的属性或方法,匹配单一配置
注入:org.springframework.core.env.Environment
或者注入:org.springframework.core.env.PropertyResolver
或者获取:ConfigurableApplicationContext.getEnvironment()
调用:env.getProperty()

特殊的变量:

系统端口:server.port = 0 (表示分配随机端口) 环境变量特殊用(SERVER_PORT替代,serverPort, server.port)
真实端口:local.server.port (但是这个变量,在容器初始化完成以后才有值)


sswhsz
168 声望4 粉丝