在Spring Boot中,我知道我可以用application.yml替换application.properties并使用YAML格式。 但是,我的application.yml越来越拥挤,所以我需要将它分开一点。我怎样才能做到这一点?我想做这样的事情:
...
@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@EnableScheduling
@PropertySource({"classpath:application.yml", "classpath:scheduling.yml"})
public class ApplicationConfig {
...
答案 0 :(得分:28)
@PropertySource
注释,您不需要它scheduling.yml
重命名为src/main/resources/application-scheduling.yml
在src/main/resources/application.yml
文件的下一行添加:
spring.profiles.include: 'scheduling'
答案 1 :(得分:10)
@PropertySource
不支持YAML(可能会在Spring 4.1中支持)。您可以将spring.config.location
或spring.config.name
设置为以逗号分隔的列表(例如,作为系统属性或命令行参数)。
我个人喜欢在同一个地方放置所有的YAML(结构确实有助于在视觉上分解它,你可以使用文件里面的文件将它分开更多)。我觉得这只是味道。
答案 2 :(得分:8)
如果我有很多配置和/或环境,通常我会这样做:
$ cat src/main/resources/application.yml:
spring:
profiles:
include: >
profile1,
profile2,
...
profileN
$ ls -lah src/main/resources/config:
drwxr-xr-x 4 mak staff 136B Apr 16 23:58 .
drwxr-xr-x 6 mak staff 204B Apr 17 01:54 ..
-rw-r--r-- 1 mak staff 60B Apr 16 23:58 application-profile1.yml
-rw-r--r-- 1 mak staff 62B Apr 16 23:16 application-profile2.yml
...
-rw-r--r-- 1 mak staff 50B Apr 16 23:16 application-profileN.yml
答案 3 :(得分:6)
您可以在主yaml文件中使用活动配置文件概念。例如:
spring.profiles.active: test
这意味着您的资源目录中应该有application-test.yml
个文件。请考虑活动配置文件将覆盖主yaml文件中具有相同名称的属性。
欲了解更多信息,请访问: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html
答案 4 :(得分:0)
假设您的应用程序需要4个.yml文件。
application.yml
application-dev.yml
application-uat.yml
application-prod.yml
,您必须为每个文件设置不同的设置。
您只需要在适当的环境(例如dev,uat或prod级别)上进行设置,并且只需在application.yml
文件中添加一个属性即可。
spring:
profiles:
active: dev
application: /* optional */
name: Application Name