- 当然喽,SB容器也可以访问
Spring Boot容器 vs Spring Cloud容器
我们知道,Spring Cloud容器是Spring Boot容器的父容器。为了让你更直观的看到父子容器内的Bean情况(个数 详情),了解其区别,此处A哥写个最简案例比较一波:
代码语言:javascript复制public static void main(String[] args) {
ConfigurableApplicationContext bootContext = SpringApplication.run(Application.class, args);
System.out.println("boot容器类型" bootContext.getClass());
System.out.println("boot容器Bean定义总数:" bootContext.getBeanFactory().getBeanDefinitionCount());
System.out.println("boot容器Bean实例总数:" bootContext.getBeanFactory().getSingletonCount());
ConfigurableApplicationContext cloudContext = (ConfigurableApplicationContext) bootContext.getParent();
System.out.println("cloud容器类型" cloudContext.getClass());
System.out.println("cloud容器Bean定义总数:" cloudContext.getBeanFactory().getBeanDefinitionCount());
System.out.println("cloud容器Bean实例总数:" cloudContext.getBeanFactory().getSingletonCount());
}
控制台输出:
代码语言:javascript复制boot容器类型class org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext
boot容器Bean定义总数:272
boot容器Bean实例总数:283
cloud容器类型class org.springframework.context.annotation.AnnotationConfigApplicationContext
cloud容器Bean定义总数:22
cloud容器Bean实例总数:34
SC容器(父容器)里的“内容”是远远少于SB容器(子容器的)。由于父容器里内容较少,可以详细看看。A哥这里帮你截图让你更直观的感受一把喽:
context.getBeanFactory().getBeanDefinitionNames()
(共22个):
context.getBeanFactory().getSingletonNames()
(共34个):
看完了这个结果,相信你有个感官的认识了。那么A哥给小伙伴们提3个小问题哈,你可以自行思考:
- 为何一个是34,一个是22,这两个值为毛不等呢?差异在哪儿呢?
- SB容器为毛只是单单启动完,就有这么多Bean了呢?为何它如此重呢?
- SB应用有几个context上下文?SC应用呢?
总结
关于Spring Cloud系列的第一篇内容就写到这喽。本文先解释了为何我要写这个系列,以及简单的介绍了下Spring Cloud Context
工程,通过本文你是能够大概清楚A哥后面将如何展开的,比如下文将是本系列的主菜之一:BootstrapApplicationListener
监听器负责Spring Cloud容器的引导/启动/初始化,敬请关注。