[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. web.config配置文件使用总结

    我们在开发web系统的时候,使用web.config进行配置是司空见惯的,那么web.confg到底是什么呢?什么时候使用web.config呢?有几种使用web.config方式呢? 如果不太明白的 ...

  2. Git+VS2015修改提交代码以及解决冲突

    第一步:前提我们已经讲代码从git上clone(可以看我的GIt篇)下来,创建自己的开发分支.我们在自己本地的分支上开发. 看到右下角有一个develop那是我自己建立的开发的分支,现在点击devel ...

  3. SQL学习——小结练习(1)

    到处淘来的SQL题 1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu 张三     语文       81张三     数学       ...

  4. learn cmake

    cmake简介 在cmake出现之前,在linuxiax下,大型软件系统一般使用make来控制编译过程,而在Windows下可能是用vs下一个project来构建.一个复杂的系统本身依赖关系就很麻烦, ...

  5. BZOJ2179: FFT快速傅立叶 FFT实现高精度乘法

    Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring ...

  6. jenkins 展示报告

    1.下载插件 HTML Publisher plugin 2.设置说明 3.展示css 下载插件 (1).Startup Trigger: 可实现在Jenkins节点(master/slave)启动时 ...

  7. CentOS 7编译安装Python3.7.X

    在CentO S上通过编译安装Python3.7,添加python3软链,并使用python3. 环境 安装环境如下: Windows 10 Pro VMWare Workstation 15 Pro ...

  8. IOS - Autorelease for CGMutablePathRef?

    http://stackoverflow.com/questions/2819548/autorelease-for-cgmutablepathref Autorelease pools exist ...

  9. Flask-RESTful(转载)

    Flask-RESTful 是一个 Flask 扩展,它添加了快速构建 REST APIs 的支持.它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展.Flask-RESTful 鼓励以最小 ...

  10. Struts2SpringHibernate整合示例,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)

    Struts2,Spring,Hibernate是Java Web开发中最为常见的3种框架,掌握这3种框架是每个Java Web开发人员的基本功. 然而,很多初学者在集成这3个框架的时候,总是会遇到各 ...