spring启动时,会有一个父容器,然后根据有多少个 bundle 来生成 多个 子容器。每个子容器是并行的。是互相看不到对方的。但是他们都看得到父容器。
这里会出现一些问题
- 依赖的jar包中如果要获取spring容器,怎么办?直接获取父容器就可以了。
- 依赖的jar包中要扫描本容器的一些实现类,这在rpc框架中经常会遇到。这时依赖包如果还是使用父容器去获取bean就会找不到本容器的bean。因为父容器里没有子容器的数据啊。采取的办法是,依赖的jar要将所有context进行扫描(父容器和所有子容器),然后才可以获取bean.
- 自己的容器获取自己本身容器的context就行了。
总结起来,就是
- 子容器只关心自己就好。
- 依赖的jar包,如果需要扫描接口的所有实现类,则可能需要获取多个context