Spring 坑路8 番外篇 CGLIB

2021-08-20 14:42:44 字數 2817 閱讀 5026

如果被**的類,實現了介面,預設使用 jdk 動態**:

pom.xml 結構參考:

aopadvice **如下:

package proxy;

import org.aspectj.lang.joinpoint;

import org.aspectj.lang.proceedingjoinpoint;

import org.aspectj.lang.annotation.around;

import org.aspectj.lang.annotation.aspect;

import org.aspectj.lang.annotation.pointcut;

@aspect

public class aopadvice

public void beforeadvice(joinpoint point)

public void afteradvice(joinpoint point)

@around("dosomething()")

public void aroundadvice(proceedingjoinpoint proc) catch (throwable e)

afteradvice(proc);}}

realizeclass **如下:

package proxy;

public class realizeclass implements testinte***ce

}inte***ce testinte***ce

testspring **如下:

package proxy;

import org.junit.test;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

import org.springframework.context.annotation.enableaspectjautoproxy;

@enableaspectjautoproxy

@configuration

public class testspring

@bean

aopadvice aopadvice()

@test

public void test()

}

執行程式,輸出結果為:

method = print

target = proxy.realizeclass

realizeclass 類的方法中

method = print

target = proxy.realizeclass

此時結果是正確的,但是我們想知道它所使用的是哪一種動態**方式,那麼在 realizeclass.print();(testspring 中第 27 行)這行打斷點,使用debug模式執行,滑鼠放在 realizeclass 上:

如果被**的類,沒有實現介面,預設使用 cglib 動態**:

除去 realizeclass 類的繼承關係,將 realizeclass 類改為:

public class realizeclass

}

修改測試**:

@test

public void test()

輸出結果:

method = print

target = proxy.realizeclass

realizeclass 類的方法中

method = print

target = proxy.realizeclass

此時再打斷點除錯:

改回之前 jdk 動態**的**:

@test

public void test()

realizeclass 的**為:

public class realizeclass implements testinte***ce

}inte***ce testinte***ce

此時在註解上做少許改變:

@enableaspectjautoproxy(proxytargetclass = true)
打斷點除錯:

在 spring2.x 的版本中,可以在 xml 中使用

檢視 enableaspectjautoproxy:

public @inte***ce enableaspectjautoproxy .

*/boolean proxytargetclass() default false;

}

在注釋中有說明,可以選擇是否使用 cglib 動態**,但預設是不使用。

vue的踩坑路

serve pure static assets var staticpath path.posix.join config.dev.assetspublicpath,config.dev.assetssubdirectory 其實只有這一行,特別注意,這個不加拿不到json 拿不到,因為webpa...

移動端的爬坑路

暫時有幾個常見的需要注意一下,防止被坑。1 手機瀏覽器會突然縮小頂部欄或者乾脆消失。這是由於使用了瀏覽器預設滑動事件造成的。所以整體專案要麼都使用滑動事件,要麼就只使用touch滑動事件,比如better scroll。2 ios對h5css position屬性支援是有些問題的,比如fixed與i...

spring配置中的坑

spring中配置坑了好多次,現在記錄一下 佔位通過分析和檢視原始碼發現messagesource並不是在springmvc.xml中注入的bean 經過實驗發現在springmvc.xml中注入messagesource在controller可以注入,springmvc.xml中掃瞄的是contr...