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 参数来指定活动的环境。