No Cglib示例:
package com.cglibjava.nocglib;
public class InfoManager {
public void query() {
System.out.println("query");
}
}
package com.cglibjava.nocglib;
public class InfoManagerFactory {
private static InfoManager manger = new InfoManager();
public static InfoManager getInstance() {
return manger;
}
}
package com.cglibjava.nocglib;
public class ClientTest {
public static void main(String[] args) {
ClientTest c = new ClientTest();
c.anyonecanManager();
}
public void anyonecanManager() {
InfoManager manager = InfoManagerFactory.getInstance();
doCRUD(manager);
}
private void doCRUD(InfoManager manager) {
manager.query();
}
}
Cglib 示例:
依赖pom
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-full</artifactId>
<version>2.0.2</version>
</dependency>
package com.cglibjava.cglib;
public class InfoManager {
public void query() {
System.out.println("query");
}
}
package com.cglibjava.cglib;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.NoOp;
public class InfoManagerFactory {
public static InfoManager getSelectivityAuthInstance(AuthProxy auth) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(InfoManager.class);
enhancer.setCallbacks(new Callback[] { auth, NoOp.INSTANCE });
enhancer.setCallbackFilter(new AuthProxyFilter());
return (InfoManager) enhancer.create();
}
}
package com.cglibjava.cglib;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class AuthProxy implements MethodInterceptor {
private String name;
public AuthProxy(String name) {
this.name = name;
}
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
if (!"maurice".equals(this.name)) {
System.out.println("AuthProxy:you have no permits to do manager!");
return null;
}
return proxy.invokeSuper(obj, args);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.cglibjava.cglib;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.CallbackFilter;
public class AuthProxyFilter implements CallbackFilter {
private static final int AUTH_NEED = 0;
private static final int AUTH_NOT_NEED = 1;
public int accept(Method method) {
if ("query".equals(method.getName())) {
return AUTH_NOT_NEED;
}
return AUTH_NEED;
}
}
package com.cglibjava.cglib;
public class ClientTest {
public static void main(String[] args) {
ClientTest c = new ClientTest();
c.selectivityAuthManager();
}
public void selectivityAuthManager() {
System.out.println("the loginer's name is not maurice,so have no permits do manager except do query operator");
InfoManager authManager = InfoManagerFactory.getSelectivityAuthInstance(new AuthProxy("maurice1"));
doCRUD(authManager);
separatorLine();
}
private void doCRUD(InfoManager manager) {
manager.query();
}
private void separatorLine() {
System.out.println("################################");
}
}
分享到:
相关推荐
java代理机制 JDK动态代理和cglib代理 详解
java动态代理和cglib动态代理示例分享共5页.pdf.zip
jdk 和 cglib的简单动态代理,闲来无事 写写。有需要的朋友可以看看
JAVA动态代理实现Demo(JDK动态代理和CGLIB动态代理)
实现java动态代理的两个实例,jdk动态代理和cglib
java静态代理 jdk动态代理 cglib动态代理 代理原理
Java JDK代理、CGLIB、AspectJ代理分析比较
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)
JAVA JDK静态代理、动态代理、CGlib代理的代码演示 为对象增加功能
CGLIB是一个强大的、高性能的代码生成库。它被广泛使用在基于代理的AOP框架(例如Spring AOP和...EasyMock和jMock作为流行的Java测试库,它们提供Mock对象的方式来支持测试,都使用了CGLIB来对没有接口的类进行代理。
java动态代理(JDK和cglib).pdfjava动态代理(JDK和cglib).pdfjava动态代理(JDK和cglib).pdfjava动态代理(JDK和cglib).pdfjava动态代理(JDK和cglib).pdf
Java的动态代理,包括JDK自带的和cglib所集成的。
java动态代理(JDK和cglib)共10页.pdf.zip
在java编程使用CGLIB做动态代理时需要CGLIB依赖包支持,没有这个支持包,当导入import net.sf.cglib.proxy.Enhancer;或者import net.sf.cglib.proxy.MethodProxy;类似包时会提示错误,所以分享出来同大家共勉。
附件为java 动态代理实例,有全码,包括测试代码。 代码少,注释全。 对理解代理非常不错。
java动态代理(JDK和cglib)共10页.pdf.zip
cglib和asm搭配的jar,方便你使用动态代理
java常用设计模式及JDK与CGLIB实现动态代理区别(源码) /** * 使用cglib动态代理 * @author * */ public class BookFacadeProxy implements MethodInterceptor{ private Object target; @Override public...