可以使用属性文件,YAML文件,环境变量和命令行参数来外部化配置
一、属性值可以直接注入到bean
系统属性值不可以
// application.properties
name=xiaoming
server.port=80
import org.springframework.stereotype.*;
import org.springframework.beans.factory.annotation.*;
@Component
public class MyBean {
@Value("${name}")
private String name;
@Value("${server.port}") // 不可以
private String name;
// ...
}
二、属性作为参数应用
文档: 24.5 Placeholders in Properties
server.port=80
# 自定义属性
xm.name=xiaoming
xm.gener=man
xm.reference=Name:${xm.name},Gener:${xm.gener},${server.port} // 系统属性貌似不可以
三、配置随机数(Configuring Random Values)
四、通过命令行设置属性值(Accessing Command Line Properties)
可以禁用
SpringApplication.setAddCommandLineProperties(false)
五、多环境配置
通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包
六、关于自定义配置文件
- 文档: 24.3 Application Property Files
- 附录B.配置元数据: B.3 Generating Your Own Metadata by Using the Annotation Processor
七、YAML
不可以使用 @PropertySource注解来加载, 只能加载properties文件