面试被问 Spring cloud 上下文,可以这样回答

 点击上方蓝色“程序猿Damon”,选择“设为星标”

回复“yeah”获取整理的学习资料

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 项目的自动化配置

OK,上下文讲完了,你可以吹了!

 

个人网站:http://www.damon8.cn

 

热文推荐

微服务自动化部署CI/CD

基础设施服务k8s快速部署之HA篇

今天被问微服务,这几点,让面试官刮目相看

Spring cloud 之多种方式限流(实战)

Spring cloud 之熔断机制(实战)

面试被问finally 和 return,到底谁先执行?

Go语言入门基础之库源码文件

Go语言入门基础之命令源码文件

Springcloud Oauth2 HA篇

Spring Cloud Kubernetes之实战一配置管理

Spring Cloud Kubernetes之实战二服务注册与发现

Spring Cloud Kubernetes之实战三网关Gateway

求关注

关注公众号,回复入群,获取更多惊喜!公众号(程序猿Damon)里回复 ES、Flink、Java、Kafka、MQ、ML、监控、大数据、k8s 等关键字可以查看更多关键字对应的文章。

如有收获,点个在看,谢谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值