Spring cloud 上下文

简介: Spring容器启动的上下文,大家了解么?本文简单介绍下上下文的配置。

Spring cloud,相信大家已经耳熟能详了。Spring cloud 是一个基于 Spring boot 实现的云应用开发工具;Spring boot 专注于快速、方便集成的单个个体。

那么问题来了,Spring cloud 单体里的上下文是什么呢?

首先我们回忆下 Spring 的应用上下文,什么是应用上下文呢?可以简单的理解,就是将你需要 Spring 帮你管理的对象放入容器的那么一种容器对象。应用上下文即是Spring容器的一种抽象化表述,而我们常见的ApplicationContext 本质上说就是一个维护 Bean 定义以及对象之间协作关系的牛逼接口。Spring 的核心是容器,而容器并不唯一,框架本身就提供了很多个容器的实现,大概分为两种类型:一种是不常用的 BeanFactory,这是最简单的容器,只能提供基本的 DI 功能;还有一种就是继承了BeanFactory 后派生而来的应用上下文,其抽象接口也就是我们上面提到的ApplicationContext,它能提供更多企业级的服务,例如解析配置文件等,这也是应用上下文实例对象最常见的应用场景。有了上下文对象,我们就能向容器注册需要 Spring 管理的对象了。对于上下文抽象接口,Spring 也为我们提供了多种类型的容器实现,可在不同的应用场景选择:

  • AnnotationConfigApplicationContext: 从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式
  • ClassPathXmlApplicationContext: 从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式
  • XmlWebApplicationContext: 从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式
  • FileSystemXmlApplicationContext: 从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘中加载xml配置文件
  • AnnotationConfigWebApplicationContext: 专门为web应用准备的,适用于注解方式

这样,只需要将管理的对象(Spring 中我们都称为 bean)、bean 之间的协作关系配置好,通过应用上下文将配置加载到IOC容器,让Spring替我们管理对象,待我们需要使用对象的时候,再从容器中获取 bean 就可以了,因为容器能为你的程序提供你想要的对象管理服务了。

那么其实一个 Spring cloud 应用程序中有一个“引导上下文”的概念,这个引导上下文是主应用程序的父上下文。引导上下文负责从配置服务器加载配置属性,以及解密外部配置文件中的属性。和主应用程序加载 application 中的属性不同,引导上下文加载 bootstrap 中的属性。配置在 bootstrap 中的属性有更高的优先级,因此默认情况下它们不能被本地配置覆盖。

如果想禁用引导过程,可设置 spring.cloud.bootstrap.enabled=false。

bootstrap 配置文件的应用场景:

  • 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息
  • 一些固定的不能被覆盖的属性
  • 一些加密/解密的场景
  • application 配置文件主要用于 Spring Boot 项目的自动化配置。
相关文章
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
3月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
200 0
探索Spring Boot的@Conditional注解的上下文配置
|
Java 开发工具 git
实现基于Spring Cloud的配置中心
实现基于Spring Cloud的配置中心
|
设计模式 监控 Java
解析Spring Cloud中的断路器模式原理
解析Spring Cloud中的断路器模式原理
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
16023 114
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
311 6
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
210 5
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
253 5
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
2138 15
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
441 3

热门文章

最新文章