兄弟萌,相信有很多人想不到 Spring 和 SpringMVC 是父子容器吧,^ - ^,下面我们来一探究竟。
一般做 SSM 框架项目时,扫描 @Controller 注解类的对象是在 SpringMVC 容器中。而扫描 @Service、@Component、@Repository 等注解类的对象都是在 Spring 容器中。有没有兄弟想过这是为什么呢?
Spring 和 SpringMVC 是有父子容器关系的,而且正是因为这个才往往会出现包扫描的问题。Spring是父容器,SpringMVC 是子容器。父容器不能访问子容器对象,但是子容器可以访问父容器对象。
SpringMVC 子容器创建
探究源码可以发现,SpringMVC 容器在创建时会设置一个父容器,就是 Spring 容器。