精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring創建AOP代理并非只有@Aspect一種方式

開發 前端
ProxyFactoryBean與其他Spring FactoryBean實現一樣,引入了一個間層。簡單說如果你定義了一個名為foo的ProxyFactoryBean,那么引用foo的對象看不到ProxyFactoryBean實例本身,而是由ProxyFactoryBean中的getObject()方法實現創建的對象。

環境:Spring6.1.2


1. 簡介

在Spring項目中,使用@Aspect注解定義切面(Aspect)并創建AOP(面向切面編程)代理是一種常見的做法,它主要用于實現跨多個類和方法的橫切關注點(Cross-cutting Concerns)的模塊化。下面是對使用@Aspect定義切面以及創建AOP代理的示例:

@Aspect
public class LogAspect {
  // 定義切點
  @Pointcut("execution(* com.pack..*.*(..))")
  public void log() {
  }
  // 前置通知
  @Before("log()")
  public void beforeLog() {
    System.out.println("記錄日志Before...");
  }
  // 后置通知
  @After("log()")
  public void afterLog() {
    System.out.println("記錄日志After");
  }
  // 異常通知
  @AfterThrowing(pointcut = "log()", throwing = "tx")
  public void ex(Throwable tx) {
    System.err.println("發生異常: " + tx.getMessage()) ;
  }
  // 環繞通知
  @Around("log() && args(name)")
  public Object around(ProceedingJoinPoint pjp, String name) throws Throwable {
    System.out.println("log before...") ;
    System.out.println("name = " + name) ;
    Object ret = pjp.proceed() ;
    System.out.println("log after...") ;
    return ret ;
  }
}

以上是一個簡單的異常通知切面定義。在實際工作中絕大多數情況下都是通過上面的方式操作。

但是在某些場景下,你可能需要更細粒度的控制來創建代理對象,比如根據特定條件動態決定是否創建代理、自定義代理的創建過程或調整代理的行為。這時,使用ProxyFactoryBeanProxyFactory可以提供更大的靈活性。ProxyFactoryBean主要用于在Spring容器中配置和創建代理對象,而ProxyFactory則提供了編程式創建代理對象的能力。如果你需要在代碼中動態地創建代理對象,而不是通過Spring容器來管理,那么使用ProxyFactory可能更合適。

接下來將詳細介紹通過ProxyFactoryBean和ProxyFactory創建AOP代理對象。

2. 代理對象創建

2.1 ProxyFactoryBean創建代理

該類提供了對切入點、任何適用的建議及其順序的完全控制。然而,如果您不需要這樣的控制,也可以選擇更簡單的選項。

ProxyFactoryBean與其他Spring FactoryBean實現一樣,引入了一個間層。簡單說如果你定義了一個名為foo的ProxyFactoryBean,那么引用foo的對象看不到ProxyFactoryBean實例本身,而是由ProxyFactoryBean中的getObject()方法實現創建的對象。此方法創建一個AOP代理,用于包裝目標對象。

ProxyFactoryBean很多關鍵的屬性繼承自ProxyConfig(Spring中所有aop代理工廠的超類)。這些關鍵屬性結束如下:

ProxyFactoryBean proxy = new ProxyFactoryBean() ;
// 如果要代理的是目標類,而不是目標類的接口,則為True。如果該屬性值設置為true,則創建CGLIB代理
proxy.setProxyTargetClass(false) ;
// 控制是否對通過CGLIB創建的代理應用積極優化。除非您完全理解相關AOP代理如何處理優化,否則不應該輕松地使用此設置。目前僅用于CGLIB代理。它對JDK動態代理沒有影響。
proxy.setOptimize(false) ;
// 如果代理配置被凍結,則不再允許更改配置。無論是作為輕微的優化,還是當您不希望調用者在創建代理后能夠操作代理(通過建議的接口)時,這都是有用的。此屬性的默認值為false,因此允許更改(例如添加額外的通知)。
proxy.setFrozen(false) ;
// 確定是否應該在ThreadLocal中暴露當前代理,以便目標可以訪問它。如果目標需要獲取代理,而exposeProxy屬性被設置為true,那么可以使用AopContext.currentProxy()方法。
proxy.setExposeProxy(false) ;
// 接口名稱的字符串數組。如果沒有提供,則使用目標類的CGLIB代理
proxy.setProxyInterfaces(new Class<?>[] {}) ;
// 要應用的Advisor、攔截器或其他Advice名稱的字符串數組。點菜很重要,先到先得。也就是說,列表中的第一個攔截器是第一個能夠攔截調用的。
proxy.setInterceptorNames("interceptor01") ;
// 不管getObject()方法被調用的頻率如何,工廠是否應該返回一個對象。有幾個FactoryBean實現提供了這樣的方法。默認值為true
proxy.setSingleton(true) ;

以上是對ProxyFactoryBean創建代理對象時的核心配置說明。

完整使用案例如下:

public interface CommonDAO {}
  
public class PersonService {
  public void save() {
    System.out.println("save method invoke...") ;
  }
}
@Configuration
public class AppConfig {
  @Bean
  public MethodInterceptor logInterceptor() {
    return new MethodInterceptor() {
      @Override
      public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("日志記錄...") ;
        return invocation.proceed() ;
      }
    };
  }
  @Bean
  public ProxyFactoryBean personService() throws Exception {
    ProxyFactoryBean proxy = new ProxyFactoryBean() ;
    proxy.setProxyTargetClass(true) ;
    proxy.setTargetSource(new SingletonTargetSource(new PersonService())) ;
    proxy.setProxyInterfaces(new Class<?>[] {CommonDAO.class}) ;
    proxy.setInterceptorNames("logInterceptor") ;
    return proxy ;
  }
}

2.2 ProxyFactory創建代理

用Spring很容易通過編程創建AOP代理。這讓你可以在不依賴Spring IoC的情況下使用Spring AOP。由目標對象實現的接口會自動被代理。如下示例:

public interface CommonDAO {}
public class PersonService {
  public void save() {
    System.out.println("save method invoke...") ;
  }
}


public static void main(String[] args) {
  ProxyFactory factory = new ProxyFactory(new PersonService()) ;
  factory.setProxyTargetClass(true) ;
  // 設置通知類(內部會自動的包裝為Advisor)
  factory.addAdvice(new MethodInterceptor() {
    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
      System.out.println("權限控制...") ;
      return invocation.proceed() ;
    }
  });
  factory.addAdvisor(new PointcutAdvisor() {
    @Override
    public Advice getAdvice() {
      return new MethodInterceptor() {
        @Override
        public Object invoke(MethodInvocation invocation) throws Throwable {
          System.out.println("日志記錄...") ;
          return invocation.proceed() ;
        }
      } ;
    }
    @Override
    public Pointcut getPointcut() {
      return new StaticMethodMatcherPointcut() {
        @Override
        public boolean matches(Method method, Class<?> targetClass) {
          return method.getName().equals("save") ;
        }
      } ;
    }
  }) ;
  PersonService ps = (PersonService) factory.getProxy() ;
  ps.save() ;
}

以上是本篇文章的全部內容,希望對你有幫助。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2023-09-27 08:01:14

數據推送事件

2025-03-17 08:10:00

aviatorSpringJVM

2013-05-22 15:31:07

AOP的CGlib實現

2025-01-15 12:00:00

Java線程編程

2023-07-27 08:14:29

2022-08-18 09:38:02

Spring跨域

2015-05-06 10:05:22

javajava框架spring aop

2022-06-06 15:44:24

大數據數據分析思維模式

2022-02-14 10:30:37

Java方式框架

2023-08-02 10:48:47

SpringBean反射

2019-08-20 14:13:12

工業物聯網IIOT藍牙

2023-01-26 23:46:15

2009-12-25 16:27:30

MODEM接入方式

2009-02-26 10:29:00

2013-12-12 17:58:02

網絡虛擬化疊加SDN

2018-07-09 14:52:05

2020-12-09 10:15:34

Pythonweb代碼

2022-06-22 09:44:41

Python文件代碼

2022-07-07 10:33:27

Python姿勢代碼

2020-12-23 10:10:23

Pythonweb代碼
點贊
收藏

51CTO技術棧公眾號

亚洲国产综合久久| 伊人av在线播放| 免费高清在线观看| 丰满亚洲少妇av| 欧美在线视频在线播放完整版免费观看| 超碰97人人干| 99精品国自产在线| 亚洲曰韩产成在线| 日韩av免费电影| 国产成人精品一区二区无码呦| 亚洲人体偷拍| 社区色欧美激情 | 亚洲一区二区三区四区av| 欧美一区 二区 三区| 亚洲欧美电影一区二区| 久久久一本精品99久久精品| 亚洲最大成人在线视频| 亚洲区国产区| 久久视频在线播放| 色噜噜日韩精品欧美一区二区| 国产精品亚洲一区二区在线观看 | 精品国产乱码久久久久久免费| 成人观看免费完整观看| 羞羞视频在线观看免费| 欧美极品xxx| 久久riav二区三区| 国内毛片毛片毛片毛片| 奇米色一区二区| 91成品人片a无限观看| wwwav国产| 成人女性视频| 亚洲欧美日韩国产精品| 一级少妇精品久久久久久久| 日韩黄色在线| 91久久奴性调教| 成 年 人 黄 色 大 片大 全| 老司机免费在线视频| 久久精品人人做人人综合| 国产手机精品在线| 丰满人妻一区二区三区免费| 国产一区二区三区蝌蚪| 国产美女高潮久久白浆| 黄色污污网站在线观看| 国产精品日韩久久久| 国内精品久久久久| 麻豆91精品91久久久| 欧美成人日本| 伦伦影院午夜日韩欧美限制| 国产性猛交xx乱| 精品国产乱码久久久| 精品调教chinesegay| 一边摸一边做爽的视频17国产| 麻豆视频久久| 欧美一级xxx| 韩国一区二区在线播放| 青青在线精品| 欧美精品1区2区| 五月天视频在线观看| 97色婷婷成人综合在线观看| 欧美日韩国产区一| 亚洲天堂2018av| 欧美高清影院| 欧美一区二区三区四区在线观看| 老司机午夜性大片| 91精品亚洲一区在线观看| 欧美疯狂性受xxxxx喷水图片| 99热这里只有精品在线播放| 国产精品99久久久久久董美香| 91久久精品一区二区三| 国产又大又黄又粗又爽| 色综合视频一区二区三区44| 91精品国产综合久久香蕉麻豆| 亚洲午夜激情影院| 91亚洲精品视频在线观看| 精品成人一区二区三区| 亚洲一区二区三区四区五区六区 | 亚洲精品中文字幕av| av在线网站观看| 国产一区毛片| 久久精品夜夜夜夜夜久久| 极品颜值美女露脸啪啪| 亚洲高清电影| 国产精品99久久久久久久久| 国产精品久久久久久久成人午夜| 国产精品综合av一区二区国产馆| 国产伦精品一区二区三区视频黑人 | 毛片基地黄久久久久久天堂| 亚洲精品女av网站| 天天摸天天干天天操| 国产拍揄自揄精品视频麻豆| 午夜探花在线观看| 天堂电影一区| 欧美日韩大陆一区二区| 伊人久久久久久久久| 亚洲素人在线| 久久久久999| 国产精品7777777| 久久精品国产亚洲一区二区三区| 国产成人av一区二区三区| 日韩大片b站免费观看直播| 国产精品青草综合久久久久99| 免费成人进口网站| 成人福利av| 欧美一区日韩一区| 丰满少妇一区二区三区| 亚洲91视频| 人人澡人人澡人人看欧美| 国产乱色精品成人免费视频| 91麻豆国产福利精品| 亚洲综合激情五月| 亚洲校园激情春色| 日韩精品中文字幕在线不卡尤物| 97超碰在线资源| 亚洲图片在线| 成人伊人精品色xxxx视频| 欧美扣逼视频| 亚洲国产美国国产综合一区二区| 日本超碰在线观看| 亚洲精品国产动漫| 欧美极品第一页| 97国产成人无码精品久久久| www成人在线观看| 女人色极品影院| 成人国产精品久久| 夜夜嗨av一区二区三区四区| 豆国产97在线 | 亚洲| 精品一区二区三区日韩| 日韩电影免费观看在| 国产夫妻在线播放| 日韩女优电影在线观看| 国产视频精品免费| 日韩福利电影在线| 欧美精品免费观看二区| 麻豆蜜桃在线观看| 日韩av一区二区在线观看| 九九热精彩视频| 国产成人综合在线| 黑人巨大国产9丨视频| 精品久久在线| 尤物yw午夜国产精品视频明星| 亚洲影院在线播放| 99久久精品费精品国产一区二区| 日本男女交配视频| 久久在线观看| 欧美精品性视频| 99热这里精品| 亚洲精品成人少妇| 91av免费观看| 欧美视频成人| 国产精品一区在线观看| 国产深夜视频在线观看| 欧美va日韩va| 日韩精品一区二区不卡| 成人天堂资源www在线| 97中文字幕在线| 给我免费播放日韩视频| 久久免费视频这里只有精品| 好吊色一区二区三区| 午夜一区二区三区在线观看| 天天躁日日躁狠狠躁免费麻豆| 亚洲天堂激情| 欧美lavv| 九九热这里有精品| 久久午夜a级毛片| www.成人精品| 精品久久久久久中文字幕| 在线免费观看污视频| 免费在线欧美黄色| 色中色综合成人| 国产精品2区| 欧美激情精品久久久| 手机看片福利在线| 一本一本久久a久久精品综合麻豆| 久久久久亚洲av成人无码电影| 日韩av网站免费在线| 伊人久久婷婷色综合98网| 免费观看亚洲天堂| 91国产精品91| 1769在线观看| 精品久久久久av影院| 99久在线精品99re8热| 国产日韩欧美麻豆| 6080国产精品| 国产精品婷婷| 免费在线观看污污视频| 国产乱人伦精品一区| 国产成人97精品免费看片| 免费人成在线观看播放视频| 精品日韩在线观看| 波多野结衣av无码| 一区二区三区在线免费视频| 四虎影成人精品a片| 国精品**一区二区三区在线蜜桃 | 男女视频在线| 亚洲免费影视第一页| 国产人妻精品一区二区三| 五月婷婷欧美视频| 日韩在线视频免费看| 91一区二区三区在线播放| 天天综合网日韩| 亚洲国产一区二区三区高清| 无码免费一区二区三区免费播放| 一本色道69色精品综合久久| 国产成人一区二区| 色yeye免费人成网站在线观看| 亚洲色图av在线| www久久久com| 在线亚洲一区观看| 日本视频www| 亚洲天堂精品在线观看| 亚洲精品午夜视频| 成人av网站大全| 午夜天堂在线视频| 日韩一区欧美二区| 99国产精品白浆在线观看免费| 美女久久久久| 国产精品一区二区三区在线| 免费一级欧美在线大片| 国产精品免费久久久久影院 | 国产精品视频白浆免费视频| free性m.freesex欧美| 一区二区三区在线播放欧美| 五月天婷婷视频| 日韩一二三区不卡| 一本色道久久综合熟妇| 色8久久人人97超碰香蕉987| 国产乱码久久久久久| 亚洲视频免费看| 91l九色lporny| 久久色中文字幕| 欧美xxxx×黑人性爽| 国产成人欧美日韩在线电影| 三级av免费看| 久久国产尿小便嘘嘘| 国产视频手机在线播放| 西西人体一区二区| 凹凸国产熟女精品视频| 一区二区三区福利| av日韩一区二区三区| 亚洲国产日本| 你懂的av在线| 99国产精品| 草草久久久无码国产专区| 亚洲三级电影在线观看| 国产在线xxxx| 亚洲精品婷婷| 好吊妞无缓冲视频观看| 99riav国产精品| 国产成人在线免费看| 亚洲一区国产| 国产xxxxx视频| 日本成人中文字幕在线视频| 别急慢慢来1978如如2| 久热综合在线亚洲精品| 国产一线二线三线在线观看| 日本不卡在线视频| 污视频网址在线观看| 国产乱国产乱300精品| 国产乱国产乱老熟300部视频| 国产suv精品一区二区三区| 久久精品aⅴ无码中文字字幕重口| 国产91精品入口| www.超碰97| 国产日产欧美精品一区二区三区| 永久免费av无码网站性色av| 中文在线一区二区| 亚洲天堂一级片| 亚洲综合色成人| 国产精品黄色网| 在线观看亚洲成人| 一区二区三区日| 日韩一级片在线观看| 欧日韩在线视频| 亚洲无线码在线一区观看| 97电影在线观看| 欧美激情一二区| 中日韩脚交footjobhd| 国产精品久久久久久久久久久久| 日韩伦理一区二区| 国产精品国产一区二区| 亚洲丁香日韩| 国产精品av免费| 亚洲视频免费| 亚洲色图38p| 国产麻豆精品久久一二三| 中文字幕免费在线播放| 国产欧美一二三区| 免费在线视频观看| 色综合久久88色综合天天6| 国产精品欧美综合亚洲| 亚洲成人网久久久| av在线三区| 国模视频一区二区三区| 国产日本久久| 狠狠色噜噜狠狠狠狠色吗综合| 成人久久久久| 六月婷婷在线视频| 久久超级碰视频| av无码av天天av天天爽| 亚洲美女视频一区| 免费视频网站在线观看入口| 欧美一级国产精品| 成人免费在线视频网| 欧美大学生性色视频| 免费在线成人激情电影| 国产精品国产精品| 亚洲成人99| 日本爱爱免费视频| 成人a免费在线看| www深夜成人a√在线| 在线一区二区观看| 亚洲人视频在线观看| 欧美多人爱爱视频网站| 国产美女久久| 日本一区二区在线视频| 在线国产欧美| 欧美午夜精品一区二区| 亚洲欧洲www| 国产精品尤物视频| 日韩激情片免费| 91九色美女在线视频| 亚洲综合社区网| 精品亚洲成人| 可以在线看的黄色网址| 成人av在线一区二区三区| 玖玖爱免费视频| 91精品国产综合久久精品图片| 国产精品ⅴa有声小说| 欧洲成人午夜免费大片| 欧美变态网站| 人妻av中文系列| 成人高清免费观看| 精品国产乱码久久久久久鸭王1 | 国产免费av高清在线| 91精品国产色综合久久不卡98| 亚洲日本视频在线| www.激情网| 国产精品一区在线观看你懂的| 日韩精品一区二区亚洲av性色| 欧美区视频在线观看| 成人在线观看一区| 国产精品美女久久久久久免费| 国产亚洲欧美日韩在线观看一区二区| 欧美成人一区二区在线观看| 99国产欧美另类久久久精品| 日韩精品手机在线| 亚洲精品一区二区三区婷婷月| 中文字幕色婷婷在线视频| 久久久久欧美| 肉色丝袜一区二区| 中文字幕有码在线播放| 欧美色视频一区| 日本www在线观看视频| 91精品久久久久久久久久久久久| 色中色综合网| 伊人免费视频二| 亚洲午夜日本在线观看| 日韩在线一区二区三区四区| 91黄色8090| 亚洲第一论坛sis| 一区二区三区韩国| 亚洲手机成人高清视频| www.欧美国产| 欧美亚洲激情在线| 成人国产精品一级毛片视频| 性欧美1819| 亚洲一本大道在线| 美女欧美视频在线观看免费 | 香蕉视频1024| 天天综合天天做天天综合| 黄色在线视频观看网站| 国产精品中文字幕久久久| 欧美欧美全黄| 久久久久久亚洲中文字幕无码| 在线精品视频小说1| 国产激情在线| 精品国产乱码久久久久久久软件| 欧美一级网站| 黄色香蕉视频在线观看| 精品奇米国产一区二区三区| 欧美电影h版| 9l视频自拍9l视频自拍| 成av人片一区二区| 黄色一区二区视频| 久久99精品久久久久久青青91| 久久亚洲黄色| 亚洲77777| 午夜av电影一区| 麻豆视频在线观看免费网站| 国产一级二级三级精品| 蜜臀av在线播放一区二区三区| 免费人成在线观看| 在线观看亚洲区| 国内视频在线精品| 黄色小视频免费网站| 欧美日韩国产麻豆| 国产精品实拍| 奇米影视首页 狠狠色丁香婷婷久久综合 | 18欧美亚洲精品| 色哟哟在线观看|