Spring Boot 自定义配置文件(灵活配置*.proper
开发一个Spring Boot项目,启动类通常是这样的:
Spring boot 通用启动类然后只需要把配置文件application.properties放在项目资源根目录下,项目启动的时候就会自动加载此默认配置文件,但是我们的项目需要在不同的环境启动,配置文件是不同的,但是我们又不想不停地修改此配置文件,这时就希望能够在项目启动的时候指定配置文件,而不必修改已有的文件。通常我们会在项目中保存多个配置文件,供不同环境使用,只需在启动脚本中指定配置文件即可。
Well,查找整个spring boot项目,竟然没有发现显式加载application.properties的代码,从启动类一层层debug进去也没有发现。根本不知道从哪里加载的,要指定自定义的配置文件似乎有点难度了……
从启动类Application类开始,SpringBootApplication一层层看下去,眼都看花了,还是没有找到在哪里加载的。好吧,看源码不是解决所有问题的办法,更不是快速解决某个问题的好办法。看起来还是搜索引擎用起来比较省劲。果然,找到了Spring boot自定义配置文件的方式:
有两种方式,第一种:Application中需要使用注解,配置VM参数;第二种:配置Program参数。
第一种:Application中需要使用注解,配置VM参数
Spring Boot 1.5以后的版本有个注解,叫做@PropertySource,通过该注解,项目可以加载指定的配置文件(1.5之前的版本使用注解不同,也能同理处理,但是因为我用的是1.5.9,所以我只写我能用的版本^_^):
指定自定义的配置文件上图指定了配置文件在项目资源文件夹下的properties文件夹中,名为myOwn.properties。
然而,配置文件虽然可以是自定义的了,但是hardCode在代码中,并不能达到我们一开始灵活配置property文件的目的,所以还需要进一步调整。不过,我们现在已经能看到加载配置文件的地方了,那么,就可能把hardCode的property文件名转成一个参数,在项目启动的时候通过脚本传入了:
首先,把启动类里的配置文件名改用参数MY_PROPERTY_FILE:
hardCode换成参数传入然后,在项目启动时配置启动参数(如果是脚本启动,就可以写在脚本里)- 这里使用eclipse:项目名称上右键,然后单击debug configurations...
进入项目启动的配置设置启动参数:
设置启动参数然后Apply ——> Debug 即可加载你自定义的配置文件了。
另外,由于springBoot项目中提倡JavaConfig方式注入,因此项目中可能有许多*Config.java文件,这些文件都会用到@Configuration注解,也都有可能需要使用自定义的配置文件,这时可以根据需要在不同的*Config.java文件中使用上述方法指定特定文件即可。
第二种:配置Program参数:
我本来只发现了第一种,后来有人评论(多谢这位朋友)说,SpringBoot官网有关于配置文件的说明,然后我去看了一下,果然有,而且不必使用多余的注解,只需要启动时配置program参数即可:
配置program参数 恢复我们清净的Application然后启动之后配置一样生效。