當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringAOP的CGLIB动态代理的底层原理实现
生活随笔
收集整理的這篇文章主要介紹了
SpringAOP的CGLIB动态代理的底层原理实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
歡迎加入java學習討論群:725562382
CGLIB動態代理:
CGLIB(Code Generation Library)是一個開源項目!是一個強大的,高性能,高質量的Code生成類庫,它可以在運行期擴展Java類與實現Java接口。 Hibernate支持它來實現PO(Persistent Object 持久化對象)字節碼的動態生成
Hibernate生成持久化類的javassist.
CGLIB生成代理機制:其實生成了一個真實對象的子類.
?
下載cglib的jar包.
* 現在做cglib的開發,可以不用直接引入cglib的包.已經在spring的核心中集成cglib.
public class CGLibProxy implements MethodInterceptor{private ProductDao productDao;public CGLibProxy(ProductDao productDao) {super();this.productDao = productDao;}public ProductDao createProxy(){// 使用CGLIB生成代理:// 1.創建核心類:Enhancer enhancer = new Enhancer();// 2.為其設置父類:enhancer.setSuperclass(productDao.getClass());// 3.設置回調:enhancer.setCallback(this);// 4.創建代理:return (ProductDao) enhancer.create();}public Object intercept(Object proxy, Method method, Object[] args,MethodProxy methodProxy) throws Throwable {if("add".equals(method.getName())){System.out.println("日志記錄==============");Object obj = methodProxy.invokeSuper(proxy, args);return obj;}return methodProxy.invokeSuper(proxy, args);}}Spring框架結論:
如果這個類沒有實現任何接口,使用CGLIB生成代理對象.
?
歡迎加入java學習討論群:725562382
總結
以上是生活随笔為你收集整理的SpringAOP的CGLIB动态代理的底层原理实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年中国足球球迷行为洞察白皮书
- 下一篇: Mysql:mysql函数GROUP_C