在maven工程下创建springboot程序并打包,配置文件的主导权应该属于pom.xml文件。
也就是说,当.yml文件和pom.xml文件同时配置了不同的环境,那么程序打包执行后执行的将会是pom.xml下的配置。
那么既然这样,我们就将配置开发环境的主导权给pom文件,然后.yml文件通过占位符来获取启用环境的id
启动程序,我们发现结果却偏离我们的预计,回到了最原始的8080端口。
这是为什么?
我们把boot程序打包,再打开打包完成的jar包,去查看配置文件
发现原来是占位符没有被识别。
我们启用原来解析.properties文件中占位符的方法,尝试无果,不仅没有识别占位符,连打包后的配置文件也消失了。这里留个坑,等以后学到更多知识,了解了再来解答。。
回到pom文件,配置上maven的资源插件,开启识别占位符
这次我们看到程序运行后端口就是80了
打开jar包,这里的占位符也解析成功了
为了避免出现中文乱码,我们也可以加上下面这个配置,配置编码的字符集
最后,来到spring的官方文档。这里给我们详细的标明了各类配置信息的优先级,感兴趣的也可以去看看( 注意优先级顺序是从上至下递增的!)
收工!