/**
* Create on 2011-10-13 下午04:29:04 by tengfei.fangtf
*
* Copyright 1999-2100 Alibaba.com Corporation Limited.
*
* All rights reserved.
*/
package jsvassist;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;
import javassist.Translator;
import model.Business;
/**
* 使用Javassist演示Aop的Demo.
*
* @author tengfei.fangtf
*/
public class JavassistAopDemo {
public static void main(String[] args) throws Exception {
aop();
}
public static void aop() throws NotFoundException, CannotCompileException, InstantiationException, IllegalAccessException {
//获取存放CtClass的容器ClassPool
ClassPool cp = ClassPool.getDefault();
// //创建一个类加载器
// Loader cl = new Loader();
// //增加一个转换器,让类加载的时候
// cl.addTranslator(cp, new MyTranslator());
// //将类装载到JVM
// try {
// cl.run("jsvassist.JavassistAopDemo$MyTranslator", null);
// } catch (Throwable e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
CtClass cc = cp.get("model.Business");
//获得指定方法名的方法
CtMethod m = cc.getDeclaredMethod("doSomeThing");
//在方法执行前插入代码
m.insertBefore("{ System.out.println(\"记录日志\"); }");
((Business)cc.toClass().newInstance()).doSomeThing();
}
public static class MyTranslator implements Translator {
public void start(ClassPool pool) throws NotFoundException, CannotCompileException {
}
/* *
* 类装载到JVM前进行代码织入
*/
public void onLoad(ClassPool pool, String classname) {
if (!"model.Business".equals(classname)) {
return;
}
//通过报名获取类文件
try {
CtClass cc = pool.get(classname);
//获得指定方法名的方法
CtMethod m = cc.getDeclaredMethod("doSomeThing");
//在方法执行前插入代码
m.insertBefore("{ System.out.println(\"记录日志\"); }");
} catch (NotFoundException e) {
} catch (CannotCompileException e) {
}
}
public static void main(String[] args) {
Business b = new Business();
b.doSomeThing2();
b.doSomeThing();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Aop.rar_aop_java aop
共33个文件
class:15个
java:11个
jar:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 190 浏览量
2022-09-14
19:58:51
上传
评论
收藏 2.27MB RAR 举报
温馨提示
Aop实现机制测试代码针对对AOP源码的解析,写一个让大家很明白的一个aop代码
资源详情
资源评论
资源推荐
收起资源包目录
Aop.rar (33个子文件)
Aop
bin
bci
MyClassFileTransformer.class 2KB
jsvassist
JavassistAopDemo$MyTranslator.class 2KB
JavassistAopDemo.class 1KB
dynamicProxy
DynamicProxyDemo$LogInvocationHandler.class 1KB
DynamicProxyDemo.class 1KB
ProxyBusiness.class 2KB
model
IBusiness.class 133B
IBusiness2.class 136B
Business.class 889B
test
MyClassloader.class 1KB
cglib
CglibAopDemo.class 968B
CglibAopDemo$LogIntercept.class 1KB
performance
Test.class 482B
PerformanceTest.class 1KB
staticProxy
dynamicProxy
DynamicProxyDemo$Business.class 1KB
.settings
org.eclipse.jdt.core.prefs 629B
src
bci
MyClassFileTransformer.java 2KB
jsvassist
JavassistAopDemo.java 3KB
dynamicProxy
DynamicProxyDemo.java 2KB
ProxyBusiness.java 2KB
model
IBusiness.java 310B
IBusiness2.java 309B
Business.java 506B
test
MyClassloader.java 973B
cglib
CglibAopDemo.java 1KB
performance
PerformanceTest.java 1KB
Test.java 459B
staticProxy
.project 379B
.classpath 615B
lib
cglib-2.2.2-sources.jar 1.46MB
asm-3.2.jar 42KB
cglib-2.2.2.jar 280KB
misc.javassist-3.9.0.GA.jar 583KB
共 33 条
- 1
JaniceLu
- 粉丝: 78
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0