proxy in java
2024-10-01 13:17:09
[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 ");
} }
最新文章
- es6之变量的解构赋值
- [POJ2069]Super Star(模拟退火)
- Memcache的总结介绍和一些命令的总结
- VedioCaptureHelper
- Jquery 中toggle的用法举例
- UVA 10325 lottery 容斥原理
- python自定义排序函数
- Activity生命周期方法调用finish后的不同表现
- html网页中加载js脚本 下载下来是乱码(文件编码格式)
- selenium2 python自动化测试实战(回归测试)
- gulp详细入门
- C++: 带参数回调函数和不带参数的回调函数;
- openstack 之~keystone之网关协议
- idea软件快速设置主题颜色
- 《ASP.NET MVC企业实战》(三)MVC开发前奏
- answerOpenCV轮廓类问题解析
- Docker logs 命令
- 订阅号助手App发布 手机也能管理公众号了
- LeetCode--112--路径总和
- 我所理解的event loop
热门文章
- Spark RDD概念学习系列之典型RDD的特征
- rel= ";noopener";
- Excel基础视频教程在线观看
- 跟着8张思维导图学习javascript (转)
- iOS-Core-Animation-Advanced-Techniques/12-性能调优/性能调优.md
- C# 正则表达式大全(转载)
- 凸多边形 HRBUST - 1429 计算几何_凸包_未调完
- Java基础之Colloction
- HDU 1828 Picture (线段树:扫描线周长)
- python3 将两个列表生成一个字典