calmJava

          StillWaterRunsDeep
          隨筆 - 3, 文章 - 11, 評論 - 0, 引用 - 0
          數據加載中……

          spring_5

          1:
          @Retention(RetentionPolicy.RUNTIME)
          @Target({ElementType.FIELD,ElementType.METHOD})
          public @interface ResourceAnnotation {
           String name() default "";
          }

          2:
          返回屬性的類型 是否是 指定參數的類型或者是指定參數的基類(即把參數強轉成properdesc類型是否可以,可以則返回true,否則返回false)
          PropertyDescriptor properdesc = Introspector.getBeanInfo(Bean.class).getPropertyDescriptors();
          properdesc.getPropertyType().isAssignableFrom(other.class);

          3:
          getDeclaredFields() 得到所有類中聲明的字段(但不包括從父類繼承過來的類型)

          4:
          用注解來實現依賴注入的規則:
          (1):在 字段 或 setter 方法上注明注解
          (2):讀取XML文件
          (3):得到所有的屬性 遍歷 賦值
           (4): 得到所有的字段 判斷是否有注解 賦值


          5:
          @Autowired(required=false) 中 required 默認為true,指的是當找不到時會拋出異常,當為false時,會給其賦值為null

          6:
          自動裝配的幾種方式:
          byType: 按類型裝配,可以根據屬性的類型,在容器中尋找跟該類型匹配的bean。
          如果發現多個,那么將會拋出異常。如果沒有找到,即屬性值為null
          byName: 按名稱裝配,可以根據屬性的名稱,在容器中尋找跟該屬性名相同的bean,
          如果沒有找到,即屬性為null
          constructor與byType的方式類似,不同之處在于它應用于構造函數。如果在容器中沒有找到與構造器參數類型一致的bean,那么將會拋出異常。
          autodetect: 通過bean類的自省機制(introspection)來決定是使用constructor還是
          byType方式進行自動裝配。如果沒有發現默認的構造器,那么將使用byType方式。

          7:
          @Service 用于標注業務層組件
          @Controller 用于標注控制層組件(如Struts的action)
          @Repository 用于標注數據訪問組件 即DAO組件
          @Component 泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注。


          8:
          使用Spring classpath 自動掃描 方式 把組件納入spring容器中管理 的步驟:
          一:加入context命名空間 
          二:在XML文件中加入 元素 <context:component-scan base-package="cn.itcast"/> 注冊Spring自動掃描處理器,這個元素默認注冊了以前<context:annotation-config />元素所注冊的所有處理器
          三:在DAO類前加入 @Repository 注解,在Service類前加入 @Service 注解,在控制組件類前加入 @Control 注解
          四:注解所注明的類默認為單例 即 @Scope("singleton") ,如果需要,可以用 @Scope("prototype") 來使用 原型模式(每一次請求,可以標注在 @Control 上)
          五:可以使用 @PostContruct 來標注初始化的方法 ,使用 @PreDestory 來標注銷毀的方法 。其 @PostContruct 等同于 以前在XML文件中寫的 init-method="" 注解,其 @PreDestory 注解等同于 在xml文件中配置的 destory-method="" 元素
          六:要使其執行 @PreDestory 所標注的方法則使用 單例singleton模式,而不是原型prototype模式

          9:
          使用cglib 來創建沒有實現接口的類的代理對象
          一:加入 cglib-nodep-2.1_3.jar 文件
          二:Enhancer enhancer = new Enhancer();
          enhancer.setSuperclass(要代理的類);
          enhancer.setCallback(實現MethodInterceptor接口的類);

          四:寫一個實現 MethodInterceptor 接口的類,并且實現其方法

           

           

           

           


           

          posted on 2011-01-05 20:59 calmJava 閱讀(347) 評論(0)  編輯  收藏 所屬分類: Spring


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 洪江市| 白河县| 松桃| 托克托县| 大同市| 比如县| 西华县| 日土县| 开鲁县| 长子县| 左权县| 济阳县| 新建县| 合肥市| 徐州市| 肃宁县| 克什克腾旗| 渝中区| 平罗县| 榕江县| 老河口市| 苍山县| 云和县| 温宿县| 罗定市| 原平市| 灵武市| 肇源县| 德令哈市| 成都市| 吴忠市| 宜昌市| 靖边县| 建湖县| 喜德县| 安多县| 读书| 古交市| 鞍山市| 交口县| 高阳县|