<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    讀《J2EE Development without EJB》 筆記三

    Posted on 2006-01-09 17:40 JDeodar 閱讀(470) 評論(0)  編輯  收藏 所屬分類: J2EE
        自己雖然研究過一點Spring,也寫過一點利用Spring的代碼,但是從來沒有認真的從頭到尾的研究過Spring,導致其中細節概念混亂,再看到第7章,Spring框架簡介時,又體會到了這一點,希望能夠盡快抽出時間,能夠詳細閱讀有關Spring的文章和書籍,從中體會和理解IoC的“精神”和Spring的“細節”
    1、核心bean工廠
        1.1 基礎接口:
              BeanFactory
              ListableBeanFactory(只可用于當前的工廠實例,而不能進入工廠的層級體系)
              beanFacoryUtils(可以遍歷整個工廠體系)
        1.2 通過XML組裝bean:
              定義bean組件(借助標準的java.beans.PropertyEditor機制,bean工廠可以自動把String類型的值轉換為適當的類型)
              訪問bean組件(a:XmlBeanFactory、b:DefaultlistableBeanFactory和XmlBeanDefinitionReader)
        1.3 非XML格式的Bean聲明
              讀取屬性文件或資源包(PropertiesBeanDefinitionReader)
              編程方式注冊(RootBeanDefinition和MutablePropertyValues)
        1.4 組裝應用對象
              bean工廠可以根據bean屬性中描述的對象依賴來組裝(wire)bean實例,使得Spring容器能夠對受管對象進行依賴決議(dependency resolving)
        1.5 自動裝配(autowire)
              byType、byName,推薦byType(出錯可能小)
        1.6 依賴檢查(dependency checking)
             
    <bean id ="****" class="" autowire="byType" dependency-check="objects">.</bean>

              值為“object”時,表示只做對象間關聯的檢查;
              值為“simple”時,表示只檢查基本類型的屬性(原始類型或者String);
              值為“all”時,表示檢查所有的類型;
              值為“none”,表示不進行依賴檢查;
        1.7 生命周期回調
              在bean組件聲明中指定回調方法
                
    <bean id="*****" class="****" init-method="initialize" destory-method="shutdown"/>

              ***類只需提供無參數、訪問級別為public的initialize和shutdown兩個方法即可,不必實現任何Spring特有的接口(不依賴Spring)。
              只要有可能,應該盡量使用JavaBean的屬性或者構造子參數,而不是實現Spring生命周期方法。
        1.8 復雜的屬性值
              數組和List組裝方式一樣;
    1 <property name="myArrayList">
    2     <list>
    3         <ref bean="ABean"/>
    4         <ref bean="BBean"/>
    5         <value>myArrayValue</value>
    6         <value>myListValue</value>
    7     </list>
    8 </property>

              Map和Properties都一個Key值,但是不一樣(廢話一句);
     1 <property name="myMap">
     2     <map>
     3         <entry key="myMapKey">
     4             <ref bean="myBean"/>
     5         </entry>
     6         <entry key="yourMapKey">
     7             <value>yourMapValue</value>
     8         </entry>
     9     </map>
    10 </property>
     1 <property name="myProperties">
     2     <props>
     3         <prop key="myPropKey">
     4             myPropValue
     5         </prop>
     6         <prop key="yourPropKey">
     7             yourPropValue
     8         </prop>
     9     </props>
    10 </property>

    2、工廠bean
        2.1 工廠bean(factory bean)-- 它們實現了org.springframework.beans.factory.FactoryBean接口;
    public interface FactoryBean{
        object getObject() 
    throws Exception;
        Class getObjectType();
        
    boolean isSingleton();
    }
        2.2 Spring內建的資源工廠,包括:
              2.2.1 org.springframework.jndi.JndiObjectFactoryBean:一個通用的工廠bean,通過JNDI查找而獲得的對象。JNDI查找由Spring--而不是應用代碼--來執行;
              2.2.2 org.springframework.orm.hibernate.LocalSessionFactoryBean:用于在本地裝配Hibernate SessionFactory的工廠bean;
              2.2.3 org.springframework.aop.framework.ProxyFactoryBean:一個通用的工廠bean,用于獲得AOP代理。
              2.2.4 org.springframework.transaction.interceptor.TransactionProxyFactoryBean:用于為對象創建事務代理,用于實現簡捷易用的聲明性食物管理;
              2.2.5 org.springframework.remoting.rmi.RmiProxyFactoryBean:這個工廠bean可以為通過RMI訪問的遠程對象創建一個代理;
              以上為常用的,不常用的不列了......
    3、Spring 應用上下文
        應用上下文是應用程序的中心注冊機構。  
        3.1 除了支持bean工廠的全部功能之外,應用上下文還具備了下列功能:
            *支持不同信息源。可以用統一的方式根據鍵獲得本地化的信息,而不依賴地稱的信息來源。默認的實現是從資源綁定中讀取信息。
            *訪問文件資源。不依賴于實際資源環境(例如文件系統或ServletContext)的情況下,根據相對路徑載入資源。
            *支持應用事件。監聽器(Spring AOP框架可以作為“事件-監聽”機制的替代品)。
        3.2 訪問信息源以及訪問文件資源,引用對象依賴更專用的接口--org.springframework.context.ResourceLoaderAware接口--即可。
        3.3 信息源,在應用上下文聲明一個名為messageSource的MessageSourc對象,默認實現是ResourceBundleMessageSource,它對標準的java.util.ResourceBundle進行了封裝,它唯一需要的參數是basename,也就是資源包的文件名--只讀取一次,放入緩存;也提供了“ReloadableResourceBundleMessageSource”(可重新加載)。
        3.4 文件資源
              實現ResourceLoadAware接口。
        3.5 Bean Factory 后處理
              ----------

    posts - 10, comments - 2, trackbacks - 0, articles - 0

    Copyright © JDeodar

    主站蜘蛛池模板: 亚洲国产成人久久综合碰| 日韩精品在线免费观看| 日韩欧美亚洲中文乱码| 日韩国产免费一区二区三区| 久久久久亚洲AV成人无码网站| 亚洲首页国产精品丝袜| 一级毛片免费播放男男| 亚洲福利在线播放| 中国好声音第二季免费播放| 日韩欧美一区二区三区免费观看| 亚洲成AV人在线观看网址| 免费一级做a爰片久久毛片潮| 99久久99久久精品免费观看| 国产成人在线免费观看| 免费一区二区三区在线视频| 亚洲人成色77777在线观看大| 久久久久精品国产亚洲AV无码| www在线观看播放免费视频日本| 中国在线观看免费高清完整版 | 成人福利免费视频| 亚洲精品第一国产综合野| 在线免费观看一级毛片| 免费人成大片在线观看播放电影| 国拍在线精品视频免费观看 | 人人狠狠综合久久亚洲| 亚洲成av人片不卡无码久久| 亚洲日韩精品无码专区加勒比☆| 99久久精品国产免费| 亚洲噜噜噜噜噜影院在线播放| 久久免费看少妇高潮V片特黄| 亚洲精品偷拍视频免费观看| 任你躁在线精品免费| 亚洲夜夜欢A∨一区二区三区| 老司机免费午夜精品视频| 日韩电影免费在线| 久久久久久久国产免费看| 日韩亚洲Av人人夜夜澡人人爽| 香蕉免费看一区二区三区| 亚洲国产成人久久笫一页| 9277手机在线视频观看免费| 亚洲国产精品成人午夜在线观看|