• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
终天
博客园    首页    新随笔    联系   管理    订阅  订阅

Spring-静态代理

一.静态代理

    由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类  的关系在运行前就确定了。

1.满足的条件和他的弊端

  1、需要知道核心类(被代理类)是哪一个类,并且有什么方法。 

  2、非核心的代码需要重复写多次,显得代码的结构臃肿,形成代码冗余。

  3、非核心类(代理类)需要实现核心类(被代理类)实现的接口,也就是他们需要实现共同的接口,但是以核心类实现的接口(被代理类)为准。

先声明一个主题接口

复制代码
package SubjectText01;


public interface Subject {
    public void request();
}
复制代码

在实现类中要重写这个方法

复制代码 package SubjectText01;
  public class RealSubject implements Subject {
    public void request() {
      System.out.println("真实的主题对象");
    }
  }
复制代码
复制代码package SubjectText01;
 public class ProxySubject implements Subject { 
  private RealSubject realSubject;
  public RealSubject getRealSubject() {
  return realSubject;
}
public void setRealSubject(RealSubject realSubject) {
  this.realSubject = realSubject;
}
 public void request() {
  System.out.println("Before====");
  realSubject.request();
  System.out.println("After====");
 }
}
复制代码

在测试类中

复制代码
  @Test public void t2(){ 
  //创建一个真实的主题对象
  RealSubject realSubject=new RealSubject();
  //创建一个代理主题对象
  ProxySubject proxy=new ProxySubject();
  //将真实对象赋值给代理对象
  proxy.setRealSubject(realSubject);
  proxy.request();
  }
posted @ 2018-03-08 10:13  一场梦一首歌一个人  阅读(123)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3