用来表示整个应用运行时的环境,为了更形象地理解Environment,你可以把Spring应用的运行时简单地想象成两个部分:一个是Spring应用本身,一个是Spring应用所处的环境,而Environment这个接口,就是对这个所处的环境的概念性建模。

Environment在容器中是一个抽象的集合,是指应用环境的2个方面:profiles和properties。

Profile

profile配置是一个被命名的、bean定义的逻辑组,这些bean只有在给定的profile配置激活时才会注册到容器。不管是XML还是注解,Beans都有可能指派给profile配置。Environment环境对象的作用,对于profiles配置来说,它能决定当前激活的是哪个profile配置,和哪个profile是默认。

  • 一个profile就是一组Bean定义的逻辑分组。
  • 这个分组,也就 这个profile,被赋予一个命名,就是这个profile名字。
  • 只有当一个profile处于active状态时,它对应的逻辑上组织在一起的这些Bean定义才会被注册到容器中。
  • Bean添加到profile可以通过XML定义方式或才annotation注解方式。
  • Environment对于profile所扮演的角色是用来指定哪些profile是当前活跃的缺省。

Properties

properties属性可能来源于properties文件、JVM properties、system环境变量、JNDI、servlet context parameters上下文参数、专门的properties对象,Maps等等。Environment对象的作用,对于properties来说,是提供给用户方便的服务接口、方便撰写配置、方便解析配置。

  • 配置属性源。
  • 从属性源中获取属性。

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

(1)实现EnvironmentAware接口。

(2)@Inject或者@Autowired一个Environment对象。

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

Spring中的Environment相关推荐

  1. Spring 中的 context

    Spring 中的 context BeanFactory 首先看下,官方在代码中给出的注释: The root interface for accessing a Spring bean conta ...

  2. Spring 中 Bean 的生命周期

    本文作者: 伯乐在线 - yemengying 智商捉鸡?,实在没办法一下子理解Spring IoC和AOP的实现原理,看的闹心也不太懂,所以...决定拆成小的不能在小的一个个问题,一点点啃.今天先来 ...

  3. 原创 | 我被面试官给虐懵了,竟然是因为我不懂Spring中的@Configuration

    这是Hollis的第 216 篇原创分享 作者 l cxuan 来源 l Hollis(ID:hollischuang) 现在大部分的Spring项目都采用了基于注解的配置,采用了@Configura ...

  4. Spring中调用远程EJB的配置

    http://smarttao.bokee.com/3961393.html 对于一些遗留项目,实现EJB的远程调用是很有必要的,这里就简单介绍一下Spring中的配置和调用方式,从中可以感受到Spr ...

  5. 我被面试官给虐懵了,竟然是因为我不懂Spring中的@Configuration

    作者 l cxuan 来源 l Hollis(ID:hollischuang) 现在大部分的Spring项目都采用了基于注解的配置,采用了@Configuration 替换标签的做法.一行简单的注解就 ...

  6. spring中context:property-placeholder标签详解

    spring中context:property-placeholder标签的使用说明 1,有些参数在某些阶段中是常量. 在开发阶段我们连接数据库时的url,username,password等信息 分 ...

  7. 四、Spring中使用@Conditional按照条件注册Bean

    以前其实是写过@Condtional注解的笔记的,这里附上链接: Spring中的@conditional注解 但已经忘记的差不多了,所以今天再重新学习下,可以互补着学习 @Contional:按照一 ...

  8. 深究Spring中Bean的生命周期

    前言 这其实是一道面试题,是我在面试百度的时候被问到的,当时没有答出来(因为自己真的很菜),后来在网上寻找答案,看到也是一头雾水,直到看到了<Spring in action>这本书,书上 ...

  9. spring中配置数据源

    spring中配置数据源的几种常见方式: mysql 数据库配置(jdbc properties)jdbc driverClassName=com mysql jdbc Driverjdbc url= ...

  10. Spring中的一些常用注解

    目录 1. @Autowired 2. @Qualifier 3. @Resource 4. @Component 5. @Value 6. @Bean 7. 声明bean的几个注解 7.1 @Ser ...

最新文章

  1. 摆脱 FM!这些推荐系统模型真香
  2. poj1734(最小环+路径)
  3. ISA Server 2006的全自动无人职守安装
  4. java 自旋锁_java锁的种类以及辨析(一):自旋锁
  5. caffe的python接口学习(8):caffemodel中的参数及特征的抽取
  6. 系统运维遇上了大救星,是什么让IT效率提高48%
  7. gRPC创建Java RPC服务
  8. win系统删除,已经注册的服务
  9. 大数据之-Hadoop3.x_MapReduce_序列化概述---大数据之hadoop3.x工作笔记0094
  10. git钩子放服务器_Git代码自动化部署、Hook、钩子
  11. 电视剧《都挺好》弹幕数据分析
  12. 数据挖掘——时间序列算法之组合模型
  13. amoeba mysql binary_amoeba安装与实现amoeba for mysql读写分离
  14. 台式计算机开机慢,台式电脑开机很慢的解决办法
  15. freesurfer recon-all命令
  16. Linux常用命令——ps命令
  17. 《程序员的呐喊》一一1.2 巴别塔
  18. php5.6 nts ts,php ts nts v6 v9的区别
  19. 51单片机之串口通信
  20. java 聊天机器人 源码_Alice聊天机器人源码及DEMO - 源码下载|Windows编程|网络编程|源代码 - 源码中国...

热门文章

  1. 键盘输入123456789c语言,Python:键盘输入input
  2. CVPR 2021 | 让机器想象未见的世界!反事实的零次和开集识别
  3. 【云原生Kubernetes系列第二篇】Kubernetes(k8s)核心组件(对的人兜兜转转最后还是会遇见)
  4. 智能电子后视镜MFC01-LCD 高配版规格书(AI-CMS)
  5. 海思Hi3559V200运动相机、流媒体后视镜开发板防雷防静电推荐图
  6. 像素、英寸、厘米之间的换算关系
  7. IT-梦想|永无止境
  8. IDEA去掉SQL语句的黄色警告
  9. yourshelf是什么意思中文_[英语shelf的中文是什么意思]英语shelf的中文是什么意思...
  10. 2020-10-13携程招聘算法题