24.外部化配置
来源:互联网 发布:网络直播议论文 编辑:程序博客网 时间:2024/06/05 01:55
24.外部化配置
Spring Boot允许将配置外部化(externalize),这样你就能够在不同的环境下使用相同的代码。你可以使用properties文件,YAML文件,环境变量和命令行参数来外部化配置。使用@Value注解,可以直接将属性值注入到beans中,然后通过Spring的Environment
抽象或通过@ConfigurationProperties
绑定到结构化对象来访问。
Spring Boot设计了一个非常特别的PropertySource
顺序,以允许对属性值进行合理的覆盖,属性会以如下的顺序进行设值:
- home目录下的devtools全局设置属性(
~/.spring-boot-devtools.properties
,如果devtools激活)。 - 测试用例上的@TestPropertySource注解。
- 测试用例上的@SpringBootTest#properties注解。
- 命令行参数
- 来自
SPRING_APPLICATION_JSON
的属性(环境变量或系统属性中内嵌的内联JSON)。 ServletConfig
初始化参数。ServletContext
初始化参数。- 来自于
java:comp/env
的JNDI属性。 - Java系统属性(System.getProperties())。
- 操作系统环境变量。
- RandomValuePropertySource,只包含
random.*
中的属性。 - 没有打进jar包的Profile-specific应用属性(
application-{profile}.properties
和YAML变量)。 - 打进jar包中的Profile-specific应用属性(
application-{profile}.properties
和YAML变量)。 - 没有打进jar包的应用配置(
application.properties
和YAML变量)。 - 打进jar包中的应用配置(
application.properties
和YAML变量)。 @Configuration
类上的@PropertySource
注解。- 默认属性(使用
SpringApplication.setDefaultProperties
指定)。
下面是具体的示例,假设你开发一个使用name属性的@Component
:
import org.springframework.stereotype.*import org.springframework.beans.factory.annotation.*@Componentpublic class MyBean { @Value("${name}") private String name; // ...}
你可以将一个application.properties
放到应用的classpath下,为name
提供一个合适的默认属性值。当在新的环境中运行时,可以在jar包外提供一个application.properties
覆盖name
属性。对于一次性的测试,你可以使用特定的命令行开关启动应用(比如,java -jar app.jar --name="Spring"
)。
注 SPRING_APPLICATION_JSON
属性可以通过命令行的环境变量设置,例如,在一个UNIX shell中可以这样:
$ SPRING_APPLICATION_JSON='{"foo":{"bar":"spam"}}' java -jar myapp.jar
本示例中,如果是Spring Environment
,你可以以foo.bar=spam
结尾;如果在一个系统变量中,可以提供作为spring.application.json
的JSON字符串:
$ java -Dspring.application.json='{"foo":"bar"}' -jar myapp.jar
或命令行参数:
$ java -jar myapp.jar --spring.application.json='{"foo":"bar"}'
或作为一个JNDI变量java:comp/env/spring.application.json
。
0 0
- 24.外部化配置
- spring之外部化配置
- mysql外部命令配置
- 配置tomcat外部启动
- grails外部配置
- openfire外部数据库配置
- tomcat配置外部应用
- Tomcat:配置外部应用
- stm8l15x 外部时钟配置
- Eclipse配置外部Maven
- STM32L152 外部中断配置
- stm32外部中断配置
- 外部中断的配置
- Gitlab 配置外部PostgreSQL
- Tomcat配置外部应用
- SpringBoot外部配置
- STM32外部配置
- springboot外部配置
- Oracle练习总结一
- 死循环在BEAB BKPT 0xAB汇编的解决办法
- java网络编程精解学习笔记(第二章 socket详解)
- python的sorted函数对字典按key排序和按value排序
- 【Bash百宝箱】awk
- 24.外部化配置
- 初学HTML用法大全指导(二)html对图像的设置
- JAVABEAN EJB POJO区别
- Android和H5互调案例基础详解
- poj A Knight's Journey(DFS)(字典序)
- Java网络编程精解学习笔记(第三章 serverSocket详解)
- mysql 协议的服务端握手包及对其解析
- 手机拨号键盘调试命令
- mysql explain中的type列含义和extra列的含义