spring-6-aop-3-cglib

xiaoxiao2021-02-28  110

package com.aop.cglib; public class Test { public static void main(String[] args) { UserProxy userProxy = new UserProxy(); UserImpl ui = (UserImpl)userProxy.getProxyObject(UserImpl.class); ui.saveUser("曹雪坤"); System.out.println("\r\n ######### \r\n"); ui.deleteUser("xxx"); } } package com.aop.cglib; public class UserImpl { public void saveUser(String username){ System.out.println("保存用户:"+username); } public void deleteUser(String username){ System.out.println("删除用户:"+username); } public void updateUser(String username){ System.out.println("更新用户:"+username); } }

package com.aop.cglib; import java.lang.reflect.Method; import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; public class UserProxy implements MethodInterceptor{ private Enhancer enhancer = new Enhancer(); public Object getProxyObject(Class clz){ enhancer.setSuperclass(clz); enhancer.setCallback(this); return enhancer.create(); } @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("在调用方法之前执行"); Object object = proxy.invokeSuper(obj, args); System.out.println("在调用方法之后执行"); return object; } }

转载请注明原文地址: https://www.6miu.com/read-48889.html

最新回复(0)