跳到主要内容

Spring5中文文档【10】IOC容器之Profile和PropertySource

1. 前言

本系列基于最新5.3.10版本,大部分内容copy于官方文档…
官方文档地址

Environment环境接口是集成在容器中的抽象,它对应用程序环境的两个关键方面建模:Profile和属性。

Profile是一个命名的、逻辑的 bean 定义的分组,仅当给定的配置文件处于活动状态时才向容器注册。Bean 可以分配给Profile,无论是在 XML 中定义还是使用注解。Environment与Profile相关的对象的作用是确定哪些Profile(如果有)当前是活动的,以及默认情况下哪些Profile(如果有)应该是活动的。

属性在几乎所有应用程序中都扮演着重要的角色,并且可能来自各种来源:属性文件、JVM 系统属性、系统环境变量、JNDI、servlet 上下文参数、ad-hoc Properties对象、Map对象等。Environment与属性相关的对象的作用是为用户提供方便的服务接口,用于配置属性源并从中解析属性。

2. Bean 定义Profile

Bean 定义Profile在核心容器中提供了一种机制,允许在不同环境中注册不同的 Bean。“环境”这个词对不同的用户可能有不同的含义,此功能可以帮助解决许多用例,包括:

  • 在开发中使用内存数据源,而不是在 QA测试 或生产中从 JNDI 查找相同的数据源。
  • 仅在将应用程序部署到性能环境中时才注册监控基础设施。
  • 为客户 A 和客户 B 部署注册 bean 的自定义实现。

比如我们开发环境下,注入的DataSource数据源如下:

@Bean
public DataSource dataSource() {


return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("my-schema.sql")
.addScript("my-test-data.sql")
.build();
}