Spring -AOP -java静态代理和动态代理实例
来源:互联网 发布:java基础讲解实战 编辑:程序博客网 时间:2024/05/24 06:49
静态代理-可以通过类代理也可以通过接口代理
动态代理只能通过接口代理,但比静态代理灵活
静态代理实例
/** * 静态代理可通过接口或者类进行代理 * @author Administrator * */public class StaticProxyTest {public static void main(String[] args) {//基于接口MyPhone myPhone = new MyPhoneImpl();StaticProxy proxy = new StaticProxy(myPhone);proxy.name("华为");//基于类MyPhoneClass myPhoneClass = new MyPhoneClass();ProxyEntity entity = new ProxyEntity(myPhoneClass);entity.name("小米");}}/** * 接口 * @author Administrator * */interface MyPhone{public void name(String str);}/** * 接口实现类 * @author Administrator * */class MyPhoneImpl implements MyPhone{@Overridepublic void name(String str) {System.out.println("早上好"+str); }}/** * 自定义静态代理类 * @author Administrator * */class StaticProxy implements MyPhone{MyPhone myPhone;public StaticProxy(MyPhone myPhone) {this.myPhone = myPhone;}@Overridepublic void name(String str) {beforeFun();myPhone.name(str);afterFun();}public void beforeFun(){System.out.println("前置代理");}public void afterFun(){System.out.println("后置代理");}}/** * 实体类 * @author Administrator * */class MyPhoneClass{public void name(String str){System.out.println("基于类实现:"+str);}}/** * 基于类的代理 * @author Administrator * */class ProxyEntity extends MyPhoneClass{MyPhoneClass myPhone;public ProxyEntity(MyPhoneClass myPhone) {this.myPhone = myPhone;}@Overridepublic void name(String str) {beforeFun();myPhone.name(str);afterFun();}public void beforeFun(){System.out.println("前置代理");}public void afterFun(){System.out.println("后置代理");}}
动态代理实例
public class DynamicProxy implements InvocationHandler{private Object subject;//代理的真实对象public DynamicProxy(Object subject) {this.subject = subject;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//添加前置beforeFun();//主方法method.invoke(subject, args);//添加后置afterFun();return null;}public void beforeFun(){System.out.println("前置代理");}public void afterFun(){System.out.println("后置代理");}}
public class Test {public static void main(String[] args) {//代理的真实对象Phone myPhone = new MyPhone();//获取代理类,将真实对象放入代理类中InvocationHandler dynamicProxy = new DynamicProxy(myPhone);//调用Proxy的newProxyInstace方法创建代理对象Phone phone = (Phone) Proxy.newProxyInstance(dynamicProxy.getClass().getClassLoader(), myPhone.getClass().getInterfaces(), dynamicProxy);phone.name("华为");phone.price(1000);}}
阅读全文
0 0
- Spring -AOP -java静态代理和动态代理实例
- spring AOP 静态代理和动态代理
- 动态代理和静态代理以及spring的aop
- spring aop proxy 静态代理和动态代理
- 动态代理和静态代理以及spring的aop
- Spring AOP 静态代理与动态代理
- java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总
- Java静态代理、动态代理以及AOP
- spring(AOP)静态代理、JDK动态代理、cglib实现代理
- Java动态代理-->Spring AOP
- spring aop,java动态代理
- Spring AOP和动态代理
- spring aop和动态代理
- Java代理(jdk静态代理、动态代理和cglib动态代理)实例及总结
- Spring AOP实践(一)动态代理和静态代理,为什么使用AOP
- Spring AOP:静态代理、动态代理和几种常见的aop配置
- Java静态代理、动态代理实例
- Java静态代理、动态代理实例
- shell 猜数的小程序
- 算法学习系列1.1
- web Service的服务端和客户端
- 51nod 1611 金牌赛事&&cf115E [线段树]
- Demo总结
- Spring -AOP -java静态代理和动态代理实例
- 深入浅出 RPC
- 001--java高并发初步
- 1061 杨辉三角 C++ Visual C++
- 设计六大原则之接口隔离原则
- 将军令 (贪心)
- 10.24 环境变量PATH,cp,mv,文档查看cat/more/less/head/tail
- SPI协议及工作原理
- opencv数字识别