Environment
是Spring
核心框架中定义的一个接口,用来表示整个应用运行时的环境。
因为Spring
中充斥了各种抽象的接口,所以简单地说Environment
是一个接口可能并不会让你觉得Environment
是做什么的,有多么重要。所以为了更形象地理解Environment
,你也可以把Spring应用的运行时简单地想象成这样两个部分:一个是Spring
应用本身,一个是Spring
应用所处的环境,而Environment
这个接口,就是对这个所处的环境的概念性建模。
这个接口对应用程序运行环境的两个关键方面进行了建模 :
profile
- 一个
profile
是一组Bean
定义(Bean definition
)的逻辑分组(logical group
)。 - 这个分组,也就是这个
profile
,被赋予一个命名,就是这个profile
的名字。 - 只有当一个
profile
处于active
状态时,它对应的逻辑上组织在一起的这些Bean
定义才会被注册到容器中。 -
Bean
添加到profile
可以通过XML
定义方式或者注解方式。 -
Environment
对于profile
机制所扮演的角色是用来指定哪些profile
是当前活跃的/缺省活跃的。
property
属性
- 一个应用的属性有很多来源: 属性文件(
properties files
),JVM系统属性,系统环境变量,JNDI
,servlet
上下文参数,临时属性对象等。 Environment
对于property
所扮演的角色是提供给使用者一个方便的服务接口用于
- 配置属性源
- 从属性源中获取属性
容器(ApplicationContext
)所管理的bean
如果想直接使用Environment
对象访问profile
状态或者获取属性,可以有两种方式
- 实现
EnvironmentAware
接口 -
@Inject
或者@Autowired
注入一个Environment
对象
绝大多数情况下,bean都不需要直接访问Environment
对象,而是通过类似@Value
注解的方式把属性值注入进来。
这个接口定义在包 org.springframework.core.env
中。下面是Spring
围绕环境抽象Environment
各个接口/类之间的继承关系:
接口/类 | 介绍 |
| 接口,抽象对属性源的访问,比如是否包含某个属性,读取属性,解析占位符,将读取到的属性转换成指定类型 |
| 接口,继承自 因为继承自 |
| 接口,为 |
| 接口,在所继承的接口之上增加了设置 |
| 接口,向接口 |
|
|
| 实现类,针对标准Spring应用(非Web应用)环境, 在 |
| 实现类,针对标准Spring Servlet Web应用的环境, 在 |