spring筆記5 spring IOC的基礎知識1

1,ioc的概念java

  Inverse of control ,控制反轉,實際的意義是調用類對接口實現類的依賴,反轉給第三方的容器管理,從而實現鬆散耦合;web

     ioc的實現方式有三種,屬性注入,構造函數注入,接口注入,經常使用的是前面兩種,後面的對類的侵入性太大,通常不用;spring

     spring就是一個第三方的依賴管理+容器,很輕鬆高效的實現了實例的建立,依賴關係的管理等底層功能,此外,還有Guice,plexus等第三方容器。apache

2,反射服務器

  每一個對象在jre中都有一個Class對象,保存着它的元數據信息,經過Class對象,能夠間接的訪問對象的屬性和方法;app

      類加載器:四類類加載器:函數

加載器 說明 補充
根加載器 加載jre的核心類庫  
ExtClassLoader 加載jre的擴展類庫  
AppClassLoader 加載項目的classpath下的類  
自定義ClassLoader 具體用途來定  

    採用全盤負責委託機制,即除非顯示使用另一個ClassLoader,或者使用原來的classLoader加載該類,以及引用類,依賴類;先委託父加載器尋找目標類,找不到的狀況下再從本身的類路徑中查找並裝載目標類;ui

   利用反射獲取構造方法,方法,字段,包,註解等信息,實例略;spa

 

3,資源接口日誌

 

  Resource,

 實現類:

 

來個例子:

    @Test
    public void getResource() throws IOException {

        Resource resource  =new ClassPathResource("log4j.properties");

       String fileName=  resource.getFilename();

        String content= FileUtils.readFileToString(resource.getFile(), Charsets.UTF_8.name());

        logger.info(fileName + " 內容:" + content);

    }

執行結果:

2013-11-20 11:28:59 web.TestResource.getResource(32)---[0]
[INFO] log4j.properties 內容:log4j.rootCategory=INFO, stdout,file

 
 

###. ������Ϊ stdout ������˵�����
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %C.%M(%L)---[%r]%n[%p] %m%n

 

 

spring定義了一套資源加載接口ResourceLoader:支持ant風格和特殊標識:

特殊標識 意義
classpath: 類路徑中加載
file: 文件目錄中加載,可以使用絕對路徑
ftp:// ftp服務器中加載
http:// http服務器中加載
? 匹配一個字符
* 匹配任意個字符
** 匹配多級路徑

 

實現類:

 

不過spring中最經常使用的是PathMatchResourcePatternResolver,支持ant風格和特殊標識

 

4,三大接口BeanFactory ,ApplicationContext,WebApplicationContext的理解

先看BeanFactory,最多見的是XmlBeanFactory,來張層級圖;

 

各類接口定義了XmlBeanFactory的功能:

接口 功能
BeanFactory 獲取bean,簡稱,判斷是否存在,是否單例
ListableBeanFactory 集合形式查看bean

 

 

ApplicationContext, spring容器,層級圖,經過繼承相關的接口,有了相關的功能;

 

能夠經過xml,註解,java類來配置ApplicationContext

 

BeanFacotry是惰性初始化,第一次調用的時候纔會組裝好資源;

ApplicationContext是啓動的時候初始化好了全部的資源;

 

WebApplicationContext ,spring web容器;

spring web 容器依賴ServletContext,在web項目中必須配置才能完成啓動,同時必須配置日誌依賴;

能夠經過ContextLoaderServlet(如今的最新版本里已經去掉 3.2.5)或者ContextLoaderListener來完成啓動

 

5,bean的生命週期

 

BeanFactory

bean在容器中的生命週期
返回 說明
bean自身的方法 經過構造函數實例化,set,get方法設置屬性,init,destroy方法初始化或者銷燬
Bean級別生命週期接口 BeanNameAware,BeanFactoryAware,InitializingBean,DisposableBean
容器級別生命週期接口 InstantiationAwareBeanPostProcessor,BeanPostProcessor
   

 

 

 

 

 

 

ApplicationContext

同BeanFactory,可是會自動識別和裝配後處理器;

相關文章
相關標籤/搜索