Spring boot支持哪些外部配置?
Spring Boot支持多种外部配置方式:
- 命令行参数
- 来自java:comp/env的JNDI属性
- 系统环境变量
- 操作系统属性
- 位于当前应用classpath下的application.properties/application.yml文件
- 在打包时会自动包含在jar外的application-{profile}.properties/application-{profile}.yml文件
- 在classpath下的配置中心(如Spring Cloud Config)
- 来自RandomValuePropertySource的random.*属性值
- 应用的jar文件外部的application.properties/application.yml文件
- 应用的jar文件内部的application.properties/application.yml文件(使用spring.config.location参数可以指定)
- @Configuration注解类
- 通过SpringApplication.setDefaultProperties指定的默认属性
优先级从高到低是:
- 命令行参数
- 外部配置文件
- 内部配置文件
- 在jar中配置文件的默认值
示例代码:
假设有一个application.properties文件,内容如下:
server.port=8080
在Spring Boot应用中,你可以这样读取配置:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
@Value("${server.port}")
private int serverPort;
public int getServerPort() {
return serverPort;
}
}
你可以通过在运行应用时传递参数来覆盖配置文件中的值:
java -jar myapp.jar --server.port=9090
或者通过设置环境变量:
export SERVER_PORT=9090
java -jar myapp.jar
或者使用系统属性:
java -Dserver.port=9090 -jar myapp.jar
评论已关闭