cglib動態代理

動態代理第二種:cglib動態代理

首先需要導入jar包(cglib-2.2.2.jar---字節碼增強)、asm.jar 兩個包都是用於操作字節碼。但是spring-core核心包裏面都包含

1)只需要編寫實現類(沒有接口)

2)繼承目標類

需要藉助於Enhancer對象

Enhancer enhancer=new Enhancer()

爲enhancer對象設置父類(父類爲目標類)

enhancer.setSuperClass(UserDaoImpl.class);

代理方法,用callback

Callback callback=new MethodInterceptor() {
			@Override
			public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
				//手工調用目標類的目標方法
				System.out.println("開啓事務");
				Object object=method.invoke(dao, args);
				System.out.println("銷燬");
				return null;
			}
		};
意思是每次目標類調用方法都進行攔截

enhancer.setCallback(callback);

創建代理對象

UserDaoImpl proxy=(UserDaoImpl)enhancer.create();




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章