Spring05---静态代理

来源:互联网 发布:数据加工处理标准 编辑:程序博客网 时间:2024/06/05 03:30

23种设计模式07—代理模式

实现相同的接口,持有要代理对象

package com.chb.Spring.dao;import javax.annotation.Resource;import org.springframework.stereotype.Repository;import com.chb.Spring.model.User;import com.chb.Spring.utils.MyLogger;/** * 静态代理 * 实现一个代理类:  *      代理类实现 所需要修改累的接口 *    注入一个对象, 通过这个对象进行修改的类操作,  *    并在实现方法内,添加所需要的信息 * 这个满足了开闭原则, 不用修改源代码 */@Repository("userProxyDao")public class UserProxyDao implements IUserDao{    //注入一个IUSerDao对象, 并提供相应的getter setter方法    private IUserDao userDao;    public IUserDao getUserDao() {        return userDao;    }    @Resource//默认通过名称注入    public void setUserDao(IUserDao userDao) {        this.userDao = userDao;    }    public void add(User user) {        //添加的信息        MyLogger.info("添加了用户");        userDao.add(user);    }    public void delete(int id) {        MyLogger.info("删除了用户");        userDao.delete(id);    }    public void load(int id) {        MyLogger.info("加载了用户");        userDao.load(id);    }}

在UserService中注入代理对象

    //默认根据名称注入    @Resource(name="userProxyDao")    public void setUserDao(IUserDao userDao) {        this.userDao = userDao;    }

测试结果

这里写图片描述

问题: 就是静态代理的问题, 如果要代理的过多, 导致代理类爆炸式增长, 导致类过多。

原创粉丝点击