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



                                                                                                                 --    學海無涯
                  

          主站蜘蛛池模板: 汽车| 茂名市| 天峻县| 浑源县| 湟源县| 离岛区| 威宁| 永仁县| 吉林市| 兴宁市| 康马县| 天长市| 颍上县| 隆子县| 乌审旗| 定远县| 旌德县| 镇江市| 淳安县| 凤山县| 大邑县| 亚东县| 贺州市| 苍山县| 田阳县| 孝义市| 诏安县| 清水县| 尉犁县| 河南省| 克什克腾旗| 平南县| 福安市| 克拉玛依市| 绩溪县| 昌平区| 潍坊市| 桓仁| 建始县| 故城县| 洱源县|