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