转载

Spring Boot外部化配置

通常情况,一个项目从开发到上线需要经历多个环境。例如程序员在自己的开发环境完成Coding,QA在测试环境完成对软件的测试。而最终软件运行在生产环境对外提供服务,产生真正的业务价值。一个正规的系统研发流程会按顺序经历如下多个环境:DEV->TEST->SIT->PRE->PROD。

那么问题就来了,各个环境间肯定会存在差异(例如各个环境的数据源配置一定是不同的),如何让我们开发好的应用能正常的运行在不同的环境呢?这就需要外部化配置。简单的说就是提前在代码中定义好配置项,代码中引用的是配置项的key,配置项真正的value放置在应用外部(包括配置文件、命令行参数、系统环境变量等等),这样不同的环境就可以根据自身情况定义不同的value。

本文会先介绍 Spring Framework Environment 的概念,有了基础之后再来看Spring Boot的 Externalized Configuration 。

Environment

Spring的Environment接口用来抽象application正在运行的环境,它有两个核心概念:profile和properties。

profile用于限制一组bean的定义,这组bean只有在该profile处于激活状态时才会被注入到Spring容器中。

properties就是一组配置项,它可以有多个来源:properties配置文件,JVM参数,系统环境变量等等。

下面分别对profile和profiles进行详细介绍

Profile

Properties

原文  https://segmentfault.com/a/1190000019623979
正文到此结束
Loading...