[Static]

  IFeature.java
ImpicateF.java
Runport.java
StaticProxy.java IFeature.java
package UProxy.staticMethod;
public interface IFeature {
public void AccessClouds(String who);
} ImpicateF.java
package UProxy.staticMethod;
public class ImpicateF implements IFeature { @Override
public void AccessClouds(String who) {
System.out.println(who+" is Accessing Clouds.");
}
} Runport.java
package UProxy.staticMethod;
public class Runport { public static void main(String[] args) {
String who="Tomas";
IFeature i=new ImpicateF(); StaticProxy sp=new StaticProxy(i);
sp.AccessClouds(who);
} } StaticProxy.java
package UProxy.staticMethod;
public class StaticProxy implements IFeature{ public IFeature target; public StaticProxy(IFeature target){
this.target=target;
} @Override
public void AccessClouds(String who) { System.out.println(who+" pre access clouds.");
target.AccessClouds(who);
System.out.println(who+" aft access clouds.");
} }

[Dynamic]

 IFeature.java
ImpicateF.java
ProxyFactory.java
Rundyport.java IFeature.java
package UProxy.dyMethod;
public interface IFeature {
public void AccessClouds(String who);
} ImpicateF.java
package UProxy.dyMethod;
public class ImpicateF implements IFeature { @Override
public void AccessClouds(String who) {
System.out.println(who+" is Accessing Clouds.");
} } ProxyFactory.java
package UProxy.dyMethod;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; public class ProxyFactory {
public Object target; public ProxyFactory(Object target){
this.target=target;
}
public Object getProxyInstance(){
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler(){ @Override
public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
System.out.println("transaction begin.");
Object returnValue = arg1.invoke(target, arg2);
System.out.println("transaction end.");
return returnValue;
}});
}
} Rundyport.java
package UProxy.dyMethod;
public class Rundyport { public static void main(String[] args) { IFeature ifs= new ImpicateF();
IFeature pf=(IFeature)new ProxyFactory(ifs).getProxyInstance();
pf.AccessClouds("QUEEBKE"); } }

[CG]

// add spring-core-xxx.jar

ImpicateF.java
ProxyFactory.java
Runcgport.java ImpicateF.java
package UProxy.cglibMethod;
public class ImpicateF {
public void AccessClouds(String who) {
System.out.println(who+" is Accessing Clouds.");
}
} ProxyFactory.java
package UProxy.cglibMethod;
import java.lang.reflect.Method; import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy; public class ProxyFactory implements MethodInterceptor { Object target;
public ProxyFactory(Object target){
this.target=target;
} public Object getInsataceProxy(){
Enhancer en=new Enhancer();
en.setSuperclass(target.getClass());
en.setCallback(this);
return en.create();
} @Override
public Object intercept(Object arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable { System.out.println("transaction 01");
Object o=arg1.invoke(target, arg2);
System.out.println("transaction 02");
return o;
} } Runcgport.java
package UProxy.cglibMethod; public class Runcgport { public static void main(String[] args) {
ImpicateF imf= new ImpicateF();
ImpicateF imf1=(ImpicateF)new ProxyFactory(imf).getInsataceProxy();
imf1.AccessClouds("pizz ");
} }

proxy in java的更多相关文章

  1. Proxy实现java动态代理

    在java设计模式中代理模式的应用比较广泛, 比如我在编写一写web程序时在filter修改request或response时, 而request中并没有相应的set方法, 这样要做到修改就需要使用一 ...

  2. Proxy Pattern(Java动态代理和cglib的实现)

    代理模式:给某一个对象提供代理对象,由代理对象控制具体对象的引用. 代理,指的就是一个角色对表另一个角色采取行动,就生活中,一个红酒厂商,是不会直接把红酒零销给客户的,都是通过代理完成他的销售业务.而 ...

  3. JRebel: ERROR Could not define reloadable class 'com.sun.proxy.$Proxy118': java.lang.OutOfMemoryError: PermGen space

    MyEclipse由于配置了JRebel,所以是它报错,不过根本问题还是:java.lang.OutOfMemoryError: PermGen space 现在按照经验调整内存大小. 在MyEcli ...

  4. java Proxy(代理机制)

    我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习 ...

  5. 自己写一个java.lang.reflect.Proxy代理的实现

    前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...

  6. Java dynamical proxy demo

    今天练习了一下动态代理的一个方面,假设使用它来完成自动设置默认不提交,启动事务,获取到异常则回滚,正常执行则提交. 如果不使用动态代理,则需要在每个方法本身里面设置Connection,写try,ca ...

  7. Set Java Proxy for Http/Https

     Command Line JVM Settings The proxy settings are given to the JVM via command line arguments: java ...

  8. JAVA基础知识之网络编程——-使用Proxy创建连接

    在前面的HTTP网络通信的例子中,使用了URLConnection conn = url.openConnection();连接网络, 如果改用URLConnection conn = url.ope ...

  9. java 动态代理深度学习(Proxy,InvocationHandler),含$Proxy0源码

    java 动态代理深度学习, 一.相关类及其方法: java.lang.reflect.Proxy,Proxy 提供用于创建动态代理类和实例的静态方法.newProxyInstance()返回一个指定 ...

随机推荐

  1. Log4Net快速配置

    1. Log4NET的概念: a) 级别:trace.debug.info.warn.error.fatal.常用debug(调试信息,程序员临时跟踪执行,在正式运行的项目中应该不显示):warn(警 ...

  2. PHP 导出excel 数据量大时

    public function ceshiexcel1(){ set_time_limit(0); $filename = '病毒日志'; header('Content-Type: applicat ...

  3. GreenDao 3.X之基本使用

    在GreenDao 3.X之注解已经了解到GreenDao 3.0的改动及注解.对于数据库的操作,无异于增删改查等四个操作.下面我们将了解GreenDao 3.X如何使用? AbstractDao 所 ...

  4. 「JavaSE 重新出发」05.01 继承

    继承 一个对象变量可以指示多种实际类型的现象被称为多态(polymorphism). 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding). 如果是private方法 ...

  5. css3背景渐变以及图片混合渲染模式(二)

    http://avnpc.com/pages/photoshop-layer-blending-algorithm http://www.html5cn.org/forum.php?mod=viewt ...

  6. Pyhton学习——Day59

    参考博客: http://www.cnblogs.com/wupeiqi/articles/6144178.html Form 1. 验证 2. 生成HTML(保留上次输入内容) 3. 初始化默认是 ...

  7. P3376 【模板】网络最大流(luogu)

    P3376 [模板]网络最大流(luogu) 最大流的dinic算法模板(采取了多种优化) 优化 时间 inline+当前弧+炸点+多路增广 174ms no 当前弧 175ms no 炸点 249 ...

  8. WoSign全球可信网站安全认证签章安装指南

    您购买了WoSign SSL证书后,将免费获得一个能直观地显示贵网站的认证信息的可信网站安全认证标识,能大大增强用户的在线信任,促成更多在线交易.所以,建议您在安装成功SSL证书后马上在网站的首页和其 ...

  9. oracle中单引号的处理

    当想让输出的结果中字段带有单引号', 场景一:连续三个单引号''' select '''helin''' from dual; ---'helin' 场景二:拼接字段的结果集--连续4个单引号 sel ...

  10. python 递归算阶乘 (转载)

    Python 递归函数 递归函数在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 ...