1、Environment 是什么?它与 ApplicationContext 的关系是什么?

Environment 是 SpringFramework 3.1 后引入的一个抽象模型,代表着 Spring 容器运行时的环境。


Environment 是 SpringFramework 3.1 引入的抽象的概念,它包含 profiles 和 properties 的信息,可以实现统一的配置存储和注入、配置属性的解析等。


Enviornment伴随着 AppilcationContext 的存在存在,在 ApplicatonContext 创建后创建;ApplicationContext 里面包含了 Environment 这个组件,可以利用 Environment 组件来获取外部配置信息。

2、Environment 都具有什么功能?

Environment 主要包含 profile 和 properties。

prifile 可以用于区分不同的环境模式,profile 可以决定哪些配置文件、配置类或者组件处于活动状态。

properties 用于属性的配置和值注入。我们可以将配置外部化,利用 properties 来获取外部配置和注入属性到组件中。

3、Environment 与 profile 的关系是什么?如何获取和设置 profile ?

Enviroment 包含 profile 这个信息。可以调用 Environment 的 getActiveProfiles() 方法来获取活动状态的环境,利用 getDefaulyProfiles() 方法来获取默认的 profile「默认的profile为default」。

Environment 的子接口 ConfigurableEnvironment 的 setActiveProfiles() 和 addActiveProfile() 分别可以设置活动环境和添加活动环境。

我们可以在项目启动时利用 -Dspring.profiles.active 参数来指定活动的环境。