@Component public class ComBean { @Value("${name}") private String name; }在应用程序classpath路径(例如,在JAR中)上,可以有一个application.properties文件,该文件为name提供了一个合理的默认属性值 。在新环境中运行时,可以在jar外部提供application.properties文件来覆盖name 属性 。对于一次性测试,您可以使用特定的命令行开关(例如java –jar app.jar --name=”String”)启动 。
在前面的示例中,您将在Spring环境中得到name=test 。您还可以在系统属性中以spring.application.json的形式提供json,如下例所示:RandomValuePropertySource配置随机数
java -Dspring.application.json='{"name":"test"}' -jar myapp.jar
还可以使用命令行参数提供JSON,如下例所示:
java -jar myapp.jar --spring.application.json='{"name":"test"}'
RandomValuePropertySource对于生产注入随机值(例如,到机密或测试用例中)很有用 。它可以生成整数、long、uuid或字符串,如下例所示:
my.secret=${random.value}my.number=${random.int}my.bignumber=${random.long}my.uuid=${random.uuid}my.number.less.than.ten=${random.int(10)}my.number.in.range=${random.int[1024,65536]} 访问命令行参数
默认情况下,SpringApplication会将任何命令行选项参数(即以-开头的参数,例如--server.port=9000)转换为属性,并将其添加到Spring环境中 。如前所述,命令行属性总是优先于其他属性源 。
如果不希望将命令行属性添加到环境中,可以使用
SpringApplication.setAddCommandLineProperties(false)Application 属性文件SpringApplication从以下位置的application.properties文件加载属性,并将其添加到Spring环境中:
- 当前目录的 /config 子目录
- 当前目录
- classpath 的 /config 包
- classpath 的根目录
列表按优先级排序(在列表中较高位置定义的属性覆盖在较低位置定义的属性) 。
如果不喜欢application.properties作为配置文件名,可以通过指定spring.config.name环境属性切换到另一个文件名 。还可以使用spring.config.location环境属性(目录位置或文件路径的逗号分隔列表)引用显式位置 。以下示例显示如何指定其他文件名:
java -jar myproject.jar --spring.config.name=myproject以下示例显示如何指定两个位置:
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties如果spring.config.location包含目录(与文件相反),那么它们应该以/结尾,并且在运行时,在加载之前,附加从spring.config.name生成的名称,包括特定文件的文件名) 。spring.config.location中指定的文件按原样使用,不支持特定于概要文件的变量,并且被任何特定于概要文件的属性覆盖 。
按相反的顺序搜索配置位置 。默认情况下,配置的位置为classpath/、classpath:/config/、file:../、file:../config/ 。结果搜索顺序如下:
- file:./config/
- file:./
- classpath:/config/
- classpath:/
- file:./custom-config/
- classpath:custom-config/
- file:./custom-config/
- classpath:custom-config/
- file:./config/
- file:./
- classpath:/config/
- classpath:/
Profile-specific Properties
除了application.properties文件外,还可以使用以下命名约定定义特定于文件的属性:application-{profile}.properties 。环境有一组默认配置文件(默认情况下为[default]),如果未设置活动配置文件,则使用这些默认配置文件 。换句话说,如果没有显式激活配置文件,那么将加载application-default.properties中的属性 。
推荐阅读
- Android开发:build.gradle 配置指南
- 微服务网关除了zuul、spring cloud gateway还有更出色的
- Java新手如何学习Spring、Struts、Hibernate三大框架?
- H3C交换机如何配置?如何一步步的创建vlan?
- 七个开源的 Spring Boot 前后端分离项目,建议收藏加转载
- 3个Spring Boot项目调优的方式
- centos安装nodejs并配置生产环境,基于pm2
- 10行配置就能实现微服务框架的API访问限流
- 如何在Linux中配置Redis服务并设置为开机自启
- 如何在 iOS 设备上配置 hosts
