JDK动态代理实现类,完成对实现类的业务增强
1、接口
public interface TestService { void test(); }
2、实现类
public class Test1Impl implements TestService { @Override public void test() { System.out.println("---------------test1"); } }
3、实现了InvocationHandler的处理器
public class TestHandler implements InvocationHandler { private Object object; public TestHandler(Object obj){ this.object = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(method.getName() + "------------具体业务增强前"); // 执行目标对象的方法 Object invoke = method.invoke(object, args); System.out.println(method.getName() + "------------具体业务增强后"); return invoke; } public static Object creatJdkProxy(Object targetObj){ return Proxy.newProxyInstance(targetObj.getClass().getClassLoader(), targetObj.getClass().getInterfaces(), new TestHandler(targetObj)); } }
4、调用
@PostMapping(value = "/test") Result<StringResult> test(){ // 目标对象 Test1Impl test1Impl = new Test1Impl(); // 生成的代理对象 TestService testServiceProxy = (TestService)TestHandler.creatJdkProxy(test1Impl); testServiceProxy.test(); return Result.okStringResult("ccc"); }


浙公网安备 33010602011771号