Spring 中的 Environment

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定义方式或者annotation注解方式。
    • 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 中。

猜你喜欢

转载自blog.csdn.net/chrise_/article/details/80192487