Java 署理 对一批办法 的前后进行特别处理ITeye - 亚美娱乐

Java 署理 对一批办法 的前后进行特别处理ITeye

2019-01-14 05:09:03 | 作者: 小萍 | 标签: 办法,处理,署理 | 浏览: 615

* 怎么对如下办法,一致增加一个前后处理的逻辑呢? * 有静态的、有非静态的?怎么一致处理? public class BizCls2 { public static void staticMethod1() { System.out.println("处理办法1"); public static void staticMethod3(String args) { System.out.println("处理办法3"+args); public void method2(String args) { System.out.println("处理办法2"+args);

 

package proxy2;
import org.apache.commons.lang3.reflect.MethodUtils;
 * 静态办法经过硬编码的办法来完结
public class BizStaticMethodCaller {
 public static T T callWithLog(Class ? type, String method, Object... parms) throws Exception {
 System.out.println("前处理日志打印,参数"+parms);
 Object ret = MethodUtils.invokeStaticMethod(type, method, parms);
 System.out.println("后处理日志打印");
 return (T) ret;

 

package proxy2;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
 * 动态署理只能处理 非静态的办法,非静态的办法经过该办法进行处理
public class CglibProxy implements MethodInterceptor {
 static CglibProxy instence=new CglibProxy();
 public static T T getProxyInstance(Class T type) {
 Enhancer enhancer = new Enhancer();
 enhancer.setSuperclass(type);
 enhancer.setCallback(instence);
 return (T) enhancer.create();
 @Override
 public Object intercept(final Object target, Method method, final Object[] args, final MethodProxy proxy)
 throws Throwable {
 System.out.println("前处理日志打印,参数" + args);
 Object result = proxy.invokeSuper(target, args);
 System.out.println("后处理日志打印");
 return result;
}

 

package proxy2;
 * 运用办法
public class TestCiglib {
 public static void main(String[] args) throws Exception {
 // 静态办法 的调用办法,ide的代码提示、效验、查找引证不太好用了 ,不过也可以对IDE的扩展进行补偿
 // 引荐非静态的办法
 BizStaticMethodCaller.callWithLog(BizCls2.class, "staticMethod1");
 BizStaticMethodCaller.callWithLog(BizCls2.class, "staticMethod3", "333");
 // 怎么使非静态的办法,一致选用 动态署理的办法,所以目标应有一致的当地创立
 BizCls2 hello = CglibProxy.getProxyInstance(BizCls2.class);
 // 非静态的,经过署理来完结
 hello.method2("22");
}

 运转成果:

前处理日志打印,参数[Ljava.lang.Object;@12b6651

处理办法1

后处理日志打印

前处理日志打印,参数[Ljava.lang.Object;@124bbbf

处理办法3333

后处理日志打印

前处理日志打印,参数[Ljava.lang.Object;@1960f05

处理办法222

后处理日志打印

 

 

应该还有一种很暴力的办法就是 选用 ASM  对java字节    增加一些额定的代码来完结

google 搜 ASM AOP 许多比如

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4
  • 5

    Digester 解析XMLITeye

    元素,参数,解析
  • 6

    运用文件体系ITeye

    目录,读取,是否
  • 7
  • 8
  • 9

    Deep diving into CloningITeye

    文章,摘自,首先
  • 10

    Spring 整合 junit4 测验ITeye

    测验,配置文件,试用