讀《J2EE Development without EJB》 筆記三

          Posted on 2006-01-09 17:40 JDeodar 閱讀(476) 評論(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

          主站蜘蛛池模板: 衡东县| 长治县| 莱芜市| 武川县| 德钦县| 古蔺县| 新巴尔虎右旗| 娄烦县| 卢龙县| 东丰县| 巴林左旗| 建瓯市| 东平县| 淳安县| 东丽区| 赞皇县| 蒲城县| 宝丰县| 永川市| 闽清县| 志丹县| 广东省| 琼中| 花垣县| 太谷县| 确山县| 都安| 潜山县| 乐山市| 沙田区| 蕲春县| 磴口县| 沭阳县| 中江县| 河津市| 广丰县| 莲花县| 汝州市| 云和县| 盱眙县| 瓦房店市|