Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          Aware相關接口&CGLIB

          Posted on 2009-02-16 19:51 啥都寫點 閱讀(347) 評論(0)  編輯  收藏 所屬分類: J2EE

          Aware相關接口,表示在Spring實例化Bean之前進行相關的調用

          例如:準備工作-->打掃工作

          BeanNameAware表示在Spring實例化Bean之前進行調用

          ApplicationContextAware Bean類被初始化之后,將會被注入ApplicationContext實例

          //ApplicationContext實例由系統自動添加上去

             public void setApplicationContext (ApplicationContext arg0) throws BeansException {

          }    

          消息支持

          ApplicationContext繼承了MessageSource接口,用戶可以直接使用

          事件監聽:

          容器關閉

          容器初始化

          Web中請求處理的時候

          CGLIB

          springAOP的支持

          Asepect默認情況下不用實現接口,但對于目標對象(UserManagerImpl.java,在默認情況下必須實現接口,如果沒有實現接口必須引入CGLIB

          我們可以通過Advice中添加一個JoinPoint參數,這個值會由spring自動傳入,從JoinPoint中可以取得參數值、方法名等等。

          1、 如果目標對象實現了接口,默認情況下會采用JDK的動態代理實現AOP

          2、 如果目標對象實現了接口,可以強制使用CGLIB實現AOP

          3、 如果目標對象沒有實現接口,必須采用CGLIB庫,spring會自動在JDK動態代理和CGLIB之間轉換

          à如何強制使用CGLIB實現AOP

             *添加CGLIB庫,SPRING_HOME/cglib/*.jar

             * spring配置文件中加入<aop:aspect-autoproxy proxy-target-class=”true”/>

          JDK動態代理和CGLIB字節碼生成的區別?

           *JDK動態代理只能對實現了接口的類生成代理,而不能針對類

           *CGLIB是針對實現代理,主要是對指定的類生成一個子類,覆蓋其中的方法

          因為是繼承,所以該類或方法最好不要聲明成final



                                                                                                                 --    學海無涯
                  

          主站蜘蛛池模板: 尼玛县| 宜春市| 宜良县| 大厂| 外汇| 治多县| 蓝山县| 迁安市| 滕州市| 扎鲁特旗| 贺兰县| 桦南县| 思南县| 津南区| 齐河县| 璧山县| 白水县| 商都县| 兴安县| 合江县| 长顺县| 工布江达县| 旺苍县| 衡山县| 兴安县| 汝州市| 岱山县| 长岭县| 化隆| 亚东县| 德兴市| 修水县| 鄂托克旗| 宽甸| 清新县| 巴马| 诸暨市| 柞水县| 通州区| 益阳市| 仲巴县|