开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
配置文件优先级和配置文件变量读取
配置文件优先级
1.resources新增application.yml文件
spring:
application:
name: imooc-springboot-study
server:
port: 8000
servlet:
context-path: /imooc
代码说明:
- application:name:应用名字
- servlet:context-path: /imooc:项目上下文(原先的控制器为url为/goods,配置之后变成imooc/goods)
- port: 8000:设置端口号
2.新增application-dev.xml(开发环境配置文件)
3.新增application-prod.xml(生产环境配置文件)
4.application.yml设置引用prod环境的配置文件
profiles:
active: prod
代码说明:profiles:active: prod表示引用application.prod文件
5.config配置application.yml
重新启动发现端口号被覆盖了
总结:项目根目录的config/下的配置文件优先级高于resources下的配置文件
读取配置文件两种方式
1.配置文件信息
设置了版本号和名字
2.读取的两种方案
新增控制器包新增两种获取方法
- 方案1(@Value方式):
@Value("${imooc.springboot.version}")
private String version;
@Value("${imooc.springboot.name}")
private String name;
- @Value:注入@Value注解
- ${imooc.springboot.version}:对应配置文件的version字段
控制器方法:
@GetMapping("conf_inject_1")
public void firstConfInject(){
log.info("version:{},name:{}",version,name);
}
代码说明:
- log.info:打印日志的方法,{}表示占位符
重启项目:
- 方案2
新增config包并且新建SpringBootConfig.java文件
package com.imooc.springboot.study.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "imooc.springboot")
public class SpringBootConfig {
private String name;
private String version;
}
代码说明:
- @Data:lombok的setter和getter方法
- @Component:定义为组件
- @ConfigurationProperties:配置文件名字
@GetMapping("conf_inject_2")
public void secondConfInject(){
log.info("version:{},name:{}",springBootConfig.getVersion(),springBootConfig.getName());
}
重启项目: