给我一个无接口的cglib生成代理的例子
时间: 2024-03-06 19:48:15 浏览: 33
好的,下面是一个简单的无接口的CGLIB生成代理的示例:
```java
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class UserService {
public void addUser(String name) {
System.out.println("Add user: " + name);
}
}
public class UserServiceInterceptor implements MethodInterceptor {
@Override
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
System.out.println("Before method: " + method.getName());
Object result = proxy.invokeSuper(obj, args);
System.out.println("After method: " + method.getName());
return result;
}
}
public class ProxyDemo {
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserService.class);
enhancer.setCallback(new UserServiceInterceptor());
UserService userService = (UserService) enhancer.create();
userService.addUser("Alice");
}
}
```
上述代码中,我们没有定义UserService接口,而是直接定义了一个UserService类。然后,我们创建了一个UserServiceInterceptor类,用于拦截UserService的addUser方法。在ProxyDemo类中,我们使用Enhancer类创建了代理对象,并设置了目标类为UserService,拦截器为UserServiceInterceptor。最后,我们调用代理对象的addUser方法,触发拦截器的intercept方法,在目标方法执行前后添加了一些操作。运行上述代码,输出结果如下:
```
Before method: addUser
Add user: Alice
After method: addUser
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)