Spring父子容器

父子容器基本概念:

  1. Spring中可以包含多個容器:SpringMVC爲例,Spring爲父容器、SpringMVC爲子容器
  2. 父容器中的bean對子容器的bean是可見的,但是子容器的bean對父容器的bean是不可見的
  3. 父容器加載的屬性變量只是對父容器spring本身的對象可見

對於屬性,如果在父容器中有properties文件,其中的屬性子容器是訪問不到的!跨容器了!

重點:一般我們在spring.xml中不掃描@Controller註解、在springmvc.xml中不掃描@service和@Repository

典型例子:

  • 配置了事物但不生效:(@Service註解的實例理應由Spring父容器進行初始化,以保證事務的增強處理

Spring(父容器)和SpringMVC(子容器)進行掃描裝配時同時裝配了@Service註解的實例

那麼父子容器都有自己的service,controller肯定用子容器(SpringMVC)的service

所以此時得到的將是原樣的Service(沒有經過事務加強處理,故而沒有事務處理能力)

  • 在Spring.xml中加載配置文件,Controller層中通過@value獲取不到對應的屬性

原因:配置文件在父容器(Spring)被加載,而Controller是被子容器(SpringMVC)加載裝配的

故而屬性在父容器中、Controller在子容器中,屬性是不能跨容器訪問的

Spring父子容器圖解:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章