spring
程序一般都会有开发环境、测试环境以及线上环境,这些环境下程序运行依赖的基础一般不同,例如在有数据源访问的程序中,开发时可能使用了嵌入式数据库,而到测试环境上会使用独立的mysql,正式上线后的又会不同,不止数据源连接信息是与环境相关的,很多其他程序依赖的属性值也是与环境相关的。编写程序时最好要能够灵活处理不同环境的差异,我们希望如果程序运行在开发机中,则自动启用嵌入式数据库的配置值,如果在生产环境中运行则会自动适用线上的数据库连接配置值。在公司先前老的项目中,没有做好环境可变信息的分离,导致每一次在不同环境上部署程序时都要手工修改一遍程序的配置,非常难受,并且凡事手工操作就意味着效率低易出错。 目前很多java项目恐怕都要使用Spring来开发,并且Spring也支持对环境依赖相关的信息灵活管理的能力,因此我们应该把类似数据源连接这类配置交给Spring来管理。 Environment Environment 是在Spring3.0引入的一个抽象组件, Environment 能够灵活的让某种条件匹配后才注册bean到IoC容器中, Environment 还能够统一的管理底层的属性资源,即 Environment 封装的就是两方面的内容:profiles和properties。 对于profile,可以理解为profile关联了一组bean的定义