为什么Spring父容器对SpringMVC子容器中的bean是不可见的..?

为什么Spring父容器对SpringMVC子容器中的bean是不可见的,而子容器对父容器的中bean却是可见的?

文章截图来自:Spring-SpringMVC父子容器&AOP使用总结

图片说明

 如果是把Spring父容器与Spring MVC子容器比喻成平常的父类和子类,请说明为什么能比喻成父类和子类?

Spring框架包含很多Spring AOP、Spring ORM、Spring DAO、Spring Web、Spring Context、Spring Web MVC、Spring Core,每个都是Spring的一部分,相当于一个父类有多个子类,比喻成继承或者实现都可以。你可以这样想,既然这些容器都属于Spring框架,它肯定会继承或者实现Spring框架,不然弄这些框架做什么用。

就好比继承,子类继承父类,子类知道父类的属性、方法,可父类却不知道子类的方法是怎么玩的。。。

因为springmvc是在spring的基础上加入了mvc的模式,所以可以认为是springmvc是spring的子类,springmvc继承了spring的特性又在基础上加入mvc,你就可以理解为一个是父类,一个是子类的关系

我觉得吧,spring就是这么设计的,知道就行了,你没必要非得找个东西跟它类比,非要知道原由,简单打开api查下便知:
如果你查下api以XmlBeanFactory为例,他继承了HierarchicalBeanFactory接口,这个接口就时用来控制层次关系的,有个核心的方法:BeanFactory getParentBeanFactory();,通过这个方法,子容器就可以获取到父容器的bean,但这个接口没有获取子容器的方法。所以你应该明白,原因。

你问的这个问题实际上是继承的原理,子类会拥有父类的所有属性与方法,并且加上自己本身的属性与方法,但是父类却没有子类的属性与方法,java代码都是这样的,如果非要搞清楚原因的话,那就从java的设计原理上入手吧

感觉你一直纠结于“为什么能把Spring容器与Spring MVC容器比喻成父类和子类的关系”,父类和子类之间的继承关系,初衷应该是代码(模块)重用,子类天然继承了父类的属性和功能,且加入自身特有的属性和功能。
SpringMVC不就是在Spring的基础上加入了MVC的属性和功能吗,这个是不是可以类比的呢?

spring是市场上大多框架的核心粘合剂,更是许多框架的启蒙框架,是spring类框架下的父级框架,因此楼上的大神才这样子比喻,不过是为了你好理解些,真实的原理你必须自己看看源代码,
。推荐更多你去看看源代码,也多去了解一下spring的前世今生。