Spring Boot 配置
Boot默认的配置文件:application.properties,通过键值对配置对应属性
- 修改服务器端口:
server.port=80
还能改日志
常见日志级别(从低到高)是:
TRACE(跟踪,最详细,一般不用)
DEBUG(调试,开发时常用)
INFO(信息,默认级别,系统运行的关键信息)
WARN(警告,有潜在问题)
ERROR(错误,影响程序功能)
配置文件的三种格式
实际开发中主要用 yml格式
配置文件加载优先级
properties > yml > yaml
我们一般只写yml,但如果多个配置文件存在,它们中的属性共存叠加,相互覆盖
设置配置文件
yaml格式
一种数据序列化格式
优点:
- 容易阅读
- 容易与脚本语言交互
- 以数据为核心,重数据轻格式
读取数据
- 框架内置配置:Spring Boot 内部已经定义好对应的配置类,不需要我们自己写配置类
- 自定义配置:需要我们自己写配置类,然后用
@ConfigurationProperties
或@Value
来绑定
框架内置配置
自定义配置
用 @value 绑定示例
DemoController的构造函数里写:
public DemoController(MyConfigByValue myConfig) {this.myConfig = myConfig;
}
发生了这样的事情:
- Spring Boot启动,它会扫描所有带
@Component
的类(包括MyConfigByValue
)。发现里面有@Value("${myapp.name}")
、@Value("${myapp.age}")
等 - 读取配置文件,Spring 读取到:
myapp: name: icesea age: 20 future: "spring master"
。然后把这些值 注入到MyConfigByValue
对应的字段里。 - 放到Spring容器里,完整的
MyConfigByValue
对象就被当作一个 Bean,放进了 IoC 容器。它的字段已经有值了(name=icesea,age=20,future=spring master)。 - Controller需要时注入,Spring 创建
DemoController
时,发现构造函数需要一个MyConfigByValue
类型的参数。容器里正好有这个 Bean(而且已经带好配置文件里的数据),就自动传进去。
Environment读取
// 使用自动装配将所有的数据封装到一个对象@Autowiredprivate Environment env;@GetMappingpublic String getById() {System.out.println("country==>" + env.getProperty("country"));return "springboot is running";}
变量引用
不用双引号 ——> c:\windows\temp
案例
config包下面的类是配置类,它们的作用就是把配置文件yml里的键值对读出来,装进java对象里,并交给Spring容器管理。