24.3 Application Property Files
SpringApplication
从以下所示路径下的application.properties
文件加载属性并将它们添加到Spring环境中:
- 当前目录下的/config子目录.
- 当前目录.
- 类路径下的/config目录
- 类路径根目录.
上述列表以优先级排序(属性定义在位置更高的将覆盖那些定义位置低的).
Note
您还可以使用YAML(‘.yml’)文件作为’.properties’的替代.
如果你不喜欢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
Warning
spring.config.name和spring.config.location属性很早就用来确定哪些文件被加载,因此他们必须被定义为一个环境属性(通常是一个操作系统环境变量、一个系统属性或命令行参数).
如果spring.config.location
位置包含目录(而不是文件),他们应该以/
结束(在运行时,该属性的扩展名字来源于之前加载过的spring.config.name
属性值,当然也包括profile-specific文件的文件名).
在spring.config.location中指定的文件将被原样使用,不支持profile-specific文件的变体并且将被在profile-specific配置的属性覆盖.
配置路径按相反的顺序搜索.默认情况下,配置路径为classpath:/
,classpath:/config/
,file:./
,file:./config/
.由此产生的搜索顺序如下:
file:./config/
file:./
classpath:/config/
classpath:/
当使用spring.config.location
属性配置自定义路径位时,他们将替换默认的路径.例如,如果spring.config.location配置值为classpath:/custom-config/, file:./custom-config/,搜索顺序变成如下:
file:./custom-config/
classpath:custom-config/
或者,当使用spring.config.additional-location属性配置自定义路径时,他们将是默认路径的补充.例如,如果额外的路径配置为classpath:/custom-config/,file:./custom-config/,那么搜索顺序变成如下所示:
file:./custom-config/
classpath:custom-config/
file:./config/
file:./
classpath:/config/
classpath:/
这个搜索顺序允许您指定默认值在一个配置文件,然后在此有选择地覆盖这些值.
您可在你的任一默认路径下的application.properties
提供您的应用程序默认值(或者其他任何在你选择的spring.config.name属性值文件中).
然后可在程序运行时,这些默认值可以被定义在任一的自定义路径下的属性所覆盖.
Note
如果你使用环境变量而不是系统属性,大多数操作系统不允许分割关键字名字,但你可以用下划线代替(例如,
SPRING_CONFIG_NAME
代替spring.config.name
).Note
如果您的应用程序运行在一个容器,那么JNDI属性(在
java:comp/env)
或servlet上下文初始化参数可以代替使用,或者环境变量或系统属性也可使用.