我是靠谱客的博主 生动小白菜,最近开发中收集的这篇文章主要介绍Spring 环境抽象 Environment,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

EnvironmentSpring核心框架中定义的一个接口,用来表示整个应用运行时的环境。

因为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系统属性,系统环境变量,JNDIservlet上下文参数,临时属性对象等。
    • Environment对于property所扮演的角色是提供给使用者一个方便的服务接口用于
      • 配置属性源
      • 从属性源中获取属性

容器(ApplicationContext)所管理的bean如果想直接使用Environment对象访问profile状态或者获取属性,可以有两种方式

  • 实现EnvironmentAware接口
  • @Inject 或者 @Autowired注入一个 Environment对象

绝大多数情况下,bean都不需要直接访问Environment对象,而是通过类似@Value注解的方式把属性值注入进来。

这个接口定义在包 org.springframework.core.env 中。下面是Spring围绕环境抽象Environment各个接口/类之间的继承关系:

Spring Environment

接口/类介绍
PropertyResolver接口,抽象对属性源的访问,比如是否包含某个属性,读取属性,解析占位符,将读取到的属性转换成指定类型
Environment接口,继承自PropertyResolver,对环境属性访问和default/active profile访问的抽象
因为继承自PropertyResolver,所以它自然具备PropertyResolver提供的所有能力,对环境属性的访问也正是通过PropertyResolver定义的这些能力
ConfigurablePropertyResolver接口,为PropertyResolver接口抽象的属性源访问做了配置方面的增强。比如设置将属性值转换工具,指定占位符前缀后缀,遇到不可解析的嵌套的占位符怎么办等等
ConfigurableEnvironment接口,在所继承的接口之上增加了设置defaut/active profile的能力,增加/删除环境对象中属性源的能力
ConfigurableWebEnvironment接口,向接口ConfigurableEnvironment增强了根据Servlet上下文/配置初始化属性源的能力
AbstractEnvironmentEnvironment抽象基类,实现了ConfigurableEnvironment
StandardEnvironment实现类,针对标准Spring应用(非Web应用)环境,
AbstractEnvironment基础上提供了属性源systemEnvironment(来自System.getenv())和systemProperties(来自System.getProperties())
StandardServletEnvironment实现类,针对标准Spring Servlet Web应用的环境,
StandardEnvironment的基础上增加了servletContextInitParams/servletConfigInitParams/jndiProperties三个属性源

官方文档

最后

以上就是生动小白菜为你收集整理的Spring 环境抽象 Environment的全部内容,希望文章能够帮你解决Spring 环境抽象 Environment所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部