博客 / 詳情

返回

Spring-IOC-2

IOC基礎

  • Inversion of controller 控制反轉, 擁有對象創建的控制權與對象生命週期的管理權.

BeanFactoryApplicationContext區別

  • BeanFactory容器是頂層接口,定義一些基礎功能與基礎規範, 而ApplicationContext 容器是高級接口也是BeanFactory的子接口.
  • ApplicationContext擁有更多的功能, 國際化、資源文件讀取、類列表展示

page45image2785904.png

Bean的作用範圍與生命週期

  • 作用範圍與生命週期的關係, 作用範圍決定了他的生命週期

作用範圍

  • singleton、property、request、session、application、websocket
  • singleton(單例模式)與property(多例模式)使用較多; singleton生命週期為程序啓動時到結束、property生命週期為當其使用時創建新對象.

Defaut) Scepes a singie bran detirition to a singfe objncs instance for each Spring loc contsine.png

高級特性

延遲加載

  • ApplicationContext在實例化的時候也會將singleton objects 提前實例化. 提前實例化意味着作為初始化的一部分. 如果不想讓某一singleton object 提前被實例化, 可以標識為懶加載(lazy)
  • 開啓延遲加載一定程度提高容器啓動和運轉性能 
  • 對於不常使用的 Bean 設置延遲加載,這樣偶爾使用的時候再加載,不必要從一開始該 Bean 就佔 用資源

FactoryBeanBeanFactory

  • FactoryBean生成某種類的工具類. 而BeanFactory是容器的頂級接口
  • spring中存在兩種Bean, 普通Bean與FactoryBean
  • FactoryBean可以生成某一個類型的Bean實例(返回給我們) 

後置處理

  • 兩種後置處理Bean的接口, BeanFactoryPostProcessor和BeanPostProcessor

循環依賴

  • 循環引用, 也就是兩個或兩個以上的Bean互相持有對方, 最終形成閉環.
  • 構造器依賴與屬性依賴; 構造器依賴是無法解決的, 只能拋出beanCurrentlyCreationException異常, 在解決這個循環依賴的問題時, spring採用的是提前暴露對象的方法. 通過三級緩存的方式. 

依賴。.png

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.