Spring小知識點

調用固定的初始方法和銷燬方法,僅用於單例:框架

xml:
<bean id="user" class="com.action.UserAction" init-method="init" destroy-method="destroy"/>
annotation:
@PostConstruct && @PreDestroy

<alias name="fromName" alias="toName"/>函數

 
Spring的事件框架:
ApplicationEvent:容器事件,必須由ApplicationContext發佈。
ApplicationListener:監聽器,可由容器中的任何監聽器bean擔任
 
傳統JavaBean和Spring中的bean存在以下區別:
1, 用處不一樣:傳統lavaBean 更多地做爲值對象傳遞參數,而Spring 中的bean 用處
幾乎無所不在,任何應用組件均可被稱爲bean
2, 寫法不一樣:傳統lavaBean 做爲值對象,要求每一個屬性都提供getter 和setter 方法:
但Spring 中的bean 只需爲接受設值注入的屬性提供setter 方法。
3, 生命週期不一樣:傳統lavaBean 做爲值對象傳遞,不接收任何容器管理其生命週期:
Spring 中的bean 由Spring 管理其生命週期行爲。
 
依賴檢查:dependency-check(bean的屬性
no:不進行依賴檢查
simple:對基本類型和集合(除了合做者bean)進行依賴檢查
objects:僅對合做者進行依賴檢查
all:所有檢查
 

lazy-init 設置只對scop屬性爲singleton的bean起做用post

若是一個設置了當即加載的bean1,引用了一個延遲加載的bean2,那麼bean1在容器啓動時被實例化,而bean2因爲被bean1引用,因此也被實例化,這種狀況也符合延遲加載的bean在第一次調用時才被實例化的規則。
 

解釋Spring框架中bean的生命週期。spa

  1. Spring容器 從XML 文件中讀取bean的定義,並實例化bean。
  2. Spring根據bean的定義填充全部的屬性。
  3. 若是bean實現了BeanNameAware 接口,Spring 傳遞bean 的ID 到 setBeanName方法。
  4. 若是Bean 實現了 BeanFactoryAware 接口, Spring傳遞beanfactory 給setBeanFactory 方法。
  5. 若是有任何與bean相關聯的BeanPostProcessors,Spring會在postProcesserBeforeInitialization()方法內調用它們。
  6. 若是bean實現IntializingBean了,調用它的afterPropertySet方法,若是bean聲明瞭初始化方法,調用此初始化方法。
  7. 若是有BeanPostProcessors 和bean 關聯,這些bean的postProcessAfterInitialization() 方法將被調用。
  8. 若是bean實現了 DisposableBean,它將調用destroy()方法

Bean 工廠和 Application contexts 有什麼區別?xml

Application contexts提供一種方法處理文本消息,一個一般的作法是加載文件資源(好比鏡像),它們能夠向註冊爲監聽器的bean發佈事件。另外,在容器或容器內的對象上執行的那些不得不禁bean工廠以程序化方式處理的操做,能夠在Application contexts中以聲明的方式處理。Application contexts實現了MessageSource接口,該接口的實現以可插拔的方式提供獲取本地化消息的方法。對象

ApplicationContext一般的實現是什麼?接口

FileSystemXmlApplicationContext :此容器從一個XML文件中加載beans的定義,XML Bean 配置文件的全路徑名必須提供給它的構造函數。
ClassPathXmlApplicationContext:此容器也從一個XML文件中加載beans的定義,這裏,你須要正確設置classpath由於這個容器將在classpath裏找bean配置。
WebXmlApplicationContext:此容器加載一個XML文件,此文件定義了一個WEB應用的全部bean。生命週期

相關文章
相關標籤/搜索