使用CGLIB 完成动态代理 代理普通的类
时间: 2024-09-27 21:06:56 浏览: 46
CGLIB (Code Generation Library) 是一个强大的 Java 动态代理库,它允许开发者在运行时生成新的类和对象,主要用于实现 AOP (面向切面编程) 中的动态代理,尤其是当需要对目标类的行为进行增强,而不需要修改其源码的情况。
使用 CGLIB 完成动态代理通常涉及以下几个步骤:
1. **创建回调接口**:首先,定义一个接口,这个接口将作为代理的目标行为。例如:
```java
public interface MyCallback {
void doSomething();
}
```
2. **创建 CGLIB 的 Callback 接口实例**:然后,创建一个实现了 `MyCallback` 的 `Callback` 类的子类,用于存储额外的信息:
```java
public class MyClassCallback implements MyCallback {
private final MyClass myObject;
public MyClassCallback(MyClass obj) {
myObject = obj;
}
@Override
public void doSomething() {
myObject.doSomethingOriginal();
}
}
```
3. **使用 Enhancer 创建代理对象**:通过 `Enhancer` 类的 `create()` 方法,传入回调接口和实际对象,生成一个代理类的实例:
```java
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(MyCallback.class);
enhancer.setCallback(new MyClassCallback(myObject));
MyCallback dynamicProxy = (MyCallback) enhancer.create();
```
4. **调用代理方法**:现在你可以像操作普通对象一样调用 `doSomething()` 方法,实际上会触发 `MyCallback` 接口中定义的方法,即原始对象的 `doSomethingOriginal()` 方法。
阅读全文
相关推荐

















