日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring-AOP 通过配置文件实现 前置增强

發布時間:2025/3/21 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring-AOP 通过配置文件实现 前置增强 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 概述
  • 在Spring中配置
    • 通過配置文件實現增強
      • 配置文件
      • ProxyFactory Bean配置文件當中常用的屬性
      • 測試類
    • 其他代碼

概述

在上篇博文的案例中

Spring-AOP 創建增強類-前置增強

我們使用org.springframework.aop.framework.ProxyFactory通過編碼的方式將GreetingBeforeAdvice的增強織入目標類NaiveWaiter中

結合我們前面說的
Java-JDK動態代理

Java-CGLib動態代理

動態代理技術是不是很相似?

我們看下的源碼 ProxyFactoryBean#setProxyInterfaces

可以發現,ProxyFactoryBean的內部其實就是使用JDK或者CGLib動態代理技術將增強應用到目標類中的。

Spring定義的AOPProxy類具有兩個final類型的實現類,如下圖所示

  • Cglib2AopProxy是使用cglib代理技術來創建代理

  • JdkDynamicAopProxy是使用jdk代理技術來創建代理

如果通過ProxyFactory的setInterfaces(Class[] interfaces)方法指定目標接口進行代理,則ProxyFactory使用JdkDynamaicAopProxy,如果針對類的代理,則使用Cglib2AopProxy.

此外,還可以通過ProxyFactory的setOptimize(true)方法讓ProxyFactory啟動優化代理方式,這樣,針對接口的代理也會使用Cglib2AopProxy。

我們使用JDK代理來實現 Spring-AOP 增強(Advice)類型和創建增強類 中的業務測試類

//創建代理工廠對象 ProxyFactory factory=new ProxyFactory(); //設置代理接口 factory.setInterfaces(target.getClass().getInterfaces()); //設置代理類 factory.setTarget(target); //設置增強類 factory.addAdvice(advice);

使用CGLib代理實現則為:

ProxyFactory factory=new ProxyFactory(); //設置代理接口 factory.setInterfaces(target.getClass().getInterfaces()); //啟用優化,將啟用cglib代理方式 factory.setOptimize(true); //設置代理類 factory.setTarget(target); //添加增強類 factory.addAdvice(advice);

ProxyFactory通過addAdvice來增加一個增強。 用戶可以使用該方法增加多個增強,通過增強形成一個增強鏈,他們的調用順序和添加順序是一致的


在Spring中配置

代碼已托管到Github—> https://github.com/yangshangwei/SpringMaster

通過配置文件實現增強

配置文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="target" class="com.xgj.aop.spring.advice.proxyFactory.NaiveWaiter"/><bean id="greetingBeforeAdvice" class="com.xgj.aop.spring.advice.proxyFactory.GreetingBeforeAdvice"/><bean id="waiter" class="org.springframework.aop.framework.ProxyFactoryBean"p:proxyInterfaces="com.xgj.aop.spring.advice.proxyFactory.Waiter"p:interceptorNames="greetingBeforeAdvice"p:target-ref="target"/></beans>

ProxyFactory Bean配置文件當中常用的屬性

  • target:我們需要代理的目標對象

  • proxyInterfaces:代理所要實現的接口,可以是多個接口

  • interceptorNames:需要織入的目標對象的Bean的列表(增強類的Bean列表),使用Bean的名稱來指定。

  • singleton:確定返回的代理是不是單實例的,系統默認返回的是單實例的。

  • optimize:當值為true時,強制使用cglib代理。當是singleton的實例時我們推薦使用cglib代理,當是其他作用域的時候,推薦使用JDK的代理。原因是cglib創建代理速度比較慢,但是運行效率高。JDK代理則剛好相反。

  • proxyTargetClass:是否對類進行代理而不是對接口進行代理,當值為true的時候使用cglib代理

將proxyTargetClass設置為true后,無需再設置proxyInterfaces屬性,即使設置了也會被ProxyFactory忽略

測試類

package com.xgj.aop.spring.advice.proxyFactory;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class BeforceAdivceByXmlTest {@Testpublic void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com/xgj/aop/spring/advice/proxyFactory/beans.xml");Waiter waiter = ctx.getBean("waiter", Waiter.class);waiter.greetTo("Xiao");waiter.serverTo("GongJiang");} }

運行單元測試:

其他代碼

業務接口類:Waiter.Java
業務實現類:NativeWaiter.java
業務增強類:GreetingBeforeAdvice.java

參考 Spring-AOP 增強(Advice)類型和創建增強類#實例-通過代碼實現增強

總結

以上是生活随笔為你收集整理的Spring-AOP 通过配置文件实现 前置增强的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级少妇片 | 久久免费看少妇高潮v片特黄 | 亚洲男女一区二区三区 | 91蜜桃 | 各处沟厕大尺度偷拍女厕嘘嘘 | 麻豆电影网站 | 亚洲av综合色区无码二区爱av | 国产免费a视频 | 欧美大色网 | 亚洲AV无码成人精品区明星换面 | 美女黄视频网站 | 欧美激情在线观看一区 | 日本一级黄色录像 | 男人天堂视频网 | 韩国久久精品 | 男生和女生差差的视频 | 一区二区三区日 | 日本一区二区三区视频在线 | 亚洲三级在线看 | 丁香六月av | 乱精品一区字幕二区 | 欧美系列一区二区 | 美女又爽又黄免费 | 国产二页 | 天堂中文在线网 | 精品无码一区二区三区 | 天天爽夜夜爽夜夜爽精品视频 | 国产伊人自拍 | 欧美日韩精品二区 | 日韩精品小视频 | 成人免费毛片男人用品 | 国产一区导航 | 一区二区三区在线免费观看视频 | 交做爰xxxⅹ性爽 | 国产成人91精品 | 顶级尤物极品女神福利视频 | 黄在线网站 | 91免费在线视频观看 | 中文字幕在线播放视频 | 国内露脸中年夫妇交换 | 亚洲国产精品免费视频 | 欧美精品一区二区三区久久久竹菊 | 九九免费在线视频 | 亚洲第一黄网 | 伊人网成人网 | 性久久久久久久久 | 性色AV无码久久一区二区三 | 高潮一区二区三区 | www.日韩 | 综合爱爱网 | 日韩理论片在线观看 | 日韩精品一区二区三区四区五区 | 日韩xxxxxxxxx | 嫩草视频在线观看免费 | 久久黑人 | 久久五月天av | 国产精品国语自产拍在线观看 | 91av在线网站 | 男女网站在线观看 | 亚洲精品粉嫩小泬 | 午夜免费福利在线观看 | 黄色三级图片 | 久久久中文网 | 亚洲精品乱码久久久久久日本蜜臀 | 性网址| 亚洲伊人婷婷 | 玖玖国产 | 国产精品爽爽久久久久久 | 免费视频亚洲 | 天天干天天色天天 | 中文字幕少妇在线三级hd | 亚洲成人av中文字幕 | 色呦呦日韩精品 | 国产午夜视频在线观看 | 精品午夜一区二区三区 | 色婷婷久久综合中文久久蜜桃av | 成人在线观看av | 奇米久久 | 99超碰在线观看 | 伊人一级片| 国内自拍欧美 | yes4444视频在线观看 | 免费观看成人 | 欧美三级手机在线观看 | av电影中文字幕 | 黄色小视频在线观看免费 | av永久在线| 午夜亚洲天堂 | 国产激情一区二区三区四区 | 亚洲情人网 | 久久久97 | 小柔好湿好紧太爽了国产网址 | 91国自啪| 欧美一级大黄 | 又黄又骚又爽 | 日本a一级片 | 日本黄色xxxx | 日批大全 | 就操成人网 |