如何確定Spring容器之間的關係
我們知道,在一個大的專案中,不可能只有一個Spring的IOC容器,它可能會有多個IOC容器,如一個配置Service層的bean,一個配置controller層的bean。但是我們在controller層中使用@autowired註解注入了service層的bean,所以service的bean就必須要在controller的bean之前已經注入到IOC容器中,且service的bean所在的IOC容器必須是父容器parent,controller的bean所在的IOC容器必須是子容器,這樣controller的bean才可以引用service的bean。正常來說,我們在FrameworkServlet類的方法createWebApplicationContext中可以看到,Spring會將Maven工程中的resources下的IOC容器設定成父容器,而將WEB-INF下的容器統一 的認定前面那個容器為父容器。需要注意的是:子容器可以引用父容器的內容,父容器不可以應用子容器的內容。
Spring容器之間的關係:Spring容器之間是互相包含的關係,即不同Spring容器之間的bean是可以互相引用。
Spring和SpringIOC容器之間的關係:Spring容器包含SpringIOC容器,是Spring父容器,即Spring父容器不可以引用子容器的bean,而SpringMVC子容器可以引用父容器的bean。
SpringMVC容器預設的名稱時servelet-dispacher.xml,存放於WEB-INF下,這也間接的證明了resources下的IOC容器是WEB-INF下的IOC容器的父容器。