瞭解BeanFactory

為什麼說我們這篇文章只是說了解一下BeanFactory。因為BeanFactory內在的機制與代碼實現實在是太強大了,在這一點我確實不敢濫竽充數。


1. 那麼我們又如何去了解BeanFactory,大家可以從它所具備的功能和作用去了解。

  • 我們都知道Spring框架有一個明顯的作用就是它的IoC容器,所謂的IoC容器就是幫我們自動new對象,對象的生命週期交給Spring管管理
  • 而在Spring官方文檔中談到的Bean,其實就是我們說的由Spring IoC容器new出來的對象。這一點我個人認為大家可以注意一下
  • 在Spring框架中真正的能夠new一個對象能夠提供對象之間的依賴關係其幕後使者就是BeanFactory


2. BeanFactory只是一個接口,那麼要初始化BeanFactory則需要它的子類。

例如下面的代碼

<code>BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");/<code> 

但是通過上面的代碼我們好像又看到BeanFactory的另一個作用,可能這個作用能夠代表Spring框架啟動的流程

  • 首先是讀取Spring的xml配置文件,然後解析xml文件中的各種bean的定義,將xml文件中的每一個<bean>元素分別轉換成一個BeanDefinition對象,其中保存了從配置文件中讀取到的該bean的各種信息
  • 然後通過BeanDefinitionRegistry將這些bean註冊到beanFactory中
  • 最後實例化階段主要是通過反射或者CGLIB對bean進行實例化


3. 瞭解BeanFactory中的getBean方法

  • getBean(String name): 獲取對象,但是需要類型轉換
  • getBean(String name, Classclazz):獲取對象,無需類型轉換
  • 需要注意的地方
    • 如果使用getBean(String name, Classclazz)方法一定要關注Spring框架版本,在spring.4.x版本中提供了getBean對泛型的支持
    • 如果使用spring.4.x版本,需要包含下面的jar包(spring-core.jar, spring-beans.jar, spring-context.jar, spring-expression.jar, common-logging.jar



分享到:


相關文章: