【java開發Spring篇】之理解Spring容器、BeanFactory和ApplicationContext

前言:java後臺開發中Spring是個繞不去的坎,此文章僅表明鄙人的總結和理解,若有錯漏,歡迎指正...java

1、spring容器理解

Spring容器能夠理解爲生產對象(OBJECT)的地方,在這裏容器不僅是幫咱們建立了對象那麼簡單,它負責了對象的整個生命週期--建立、裝配、銷燬。而這裏對象的建立管理的控制權都交給了Spring容器,因此這是一種控制權的反轉,稱爲IOC容器,而這裏IOC容器不僅是Spring纔有,不少框架也都有該技術。spring

2、BeanFactory和ApplicationContext之間的關係

Spring的兩大核心接口:BeanFactoryApplicationContextbash

1)ApplicationContext是BeanFactory的子接口,最主要的方法就是getBean(String beanName)。框架

2)BeanFactory,直譯Bean工廠(com.springframework.beans.factory.BeanFactory),咱們通常稱BeanFactory爲IoC容器,而稱ApplicationContext爲應用上下文。性能

Spring的核心是容器,而容器並不惟一大概分爲兩種類型 (BeanFactory和ApplicationContext)
一種是不經常使用的BeanFactory,這是最簡單的容器,只能提供基本的DI功能; 一種就是繼承了BeanFactory後派生而來的ApplicationContext(應用上下文),它能提供更多企業級的服務,例如解析配置文本信息等等,這也是ApplicationContext實例對象最多見的應用場景。學習

總結:BeanFactory是Sping的心臟,那麼ApplicationContext就是完整的身軀了。spa

除了提供BeanFactory所支持的全部功能外ApplicationContext還有如下額外的功能:code

一、默認初始化全部的Singleton,也能夠經過配置取消預初始化。  
二、繼承MessageSource,所以支持國際化。  
三、資源訪問,好比訪問URL和文件。  
四、事件機制。  
五、同時加載多個配置文件。  
六、以聲明式方式啓動並建立Spring容器。  
複製代碼

注意: 因爲ApplicationContext會預先初始化全部的Singleton Bean,因而在系統建立前期會有較大的系統開銷,但一旦ApplicationContext初始化完成,程序後面獲取Singleton Bean實例時候將有較好的性能。也能夠爲bean設置lazy-init屬性爲true,即Spring容器將不會預先初始化該bean。cdn

3、Spring裝配bean的三種方式

注意:裝配和注入是不一樣的,這裏的裝配是把bean放到IOC容器中,就是掃描各類bean。xml

一、在XMl中進行顯示配置,經過xml文件將配置加載到IOC容器中

二、在Java中進行顯示配置,經過java註解的方式,@Configuration和@Bean將配置加載到IOC容器

三、隱式的bean發現機制和自動裝配,@Configuration、@Component、@ComponentScan(Spring會自動發現應用上下文中所建立的bean。)

4、Spring三種注入方式

Spring經過DI(依賴注入)實現IOC(控制反轉),經常使用的注入方式主要有三種:(構造方法注入、setter注入、註解注入)

一、構造方法注入: 在spring的xml配置文件中配置所須要注入的參數。


二、setter注入:


三、基於註解的注入:
使用@autowired便可

5、spring經常使用註解

@Component :標準一個普通的spring Bean類。 
@Repository:標註一個DAO組件類。 
@Service:標註一個業務邏輯組件類。 
@Controller:標註一個控制器組件類。
複製代碼

參考博客:
理解Spring容器、BeanFactory和ApplicationContext


結語:以往都是看別人的博客進行學習技術,其中不乏有精華博客也有吊兒郎當的CV大法文章,因此決定將本身所學所用所整理的知識分享給你們,主要仍是想爲了後浪們少走些彎路,多些正能量的博客,若有錯漏,歡迎指正,僅但願你們能在個人博客中學到知識,解決到問題,那麼就足夠了。謝謝你們!(轉載請註明原文出處)

相關文章
相關標籤/搜索