spring+静态代理

来源:互联网 发布:网络小说家排名 编辑:程序博客网 时间:2024/05/16 07:15

       利用spring框架实现了一个简单的静态代理,在这里做一些记录,把学习的过程记录下来。先讲一讲代理,代理类和被代理的类有共同的父类或父接口,这样在任何使用被代理类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理,使被代理类只关注本身的逻辑,提高了代码的重用性。静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。 

      实体类:

package com.spriProxy.entity;public class User {private int id;private String userName;private String passWord;public User(String userName){this.userName = userName;}        ……//set,get方法}
    接口:
package com.spriProxy.dao;import com.spriProxy.entity.User;public interface UserDao {//添加用户public void addUser(User user);//删除用户public void deleteUser(User user);//更新用户public boolean updateUser(User user);}
  被代理类:
package com.spriProxy.dao.impl;import org.springframework.stereotype.Repository;import com.spriProxy.dao.UserDao;import com.spriProxy.entity.User;public class UserDaoImpl implements UserDao {@Overridepublic void addUser(User user) {System.out.println("增加用户……"+user.getUserName());}@Overridepublic void deleteUser(User user) {System.out.println("删除用户……");}@Overridepublic boolean updateUser(User user) {System.out.println("更新用户……");return true;}}
    代理类:
package com.spriProxy.util.impl;import org.springframework.stereotype.Repository;import com.spriProxy.dao.UserDao;import com.spriProxy.entity.User;import com.spriProxy.util.Level;import com.spriProxy.util.Logger;public class UserProxy implements UserDao {private UserDao userDao;//此处注入的Dao是userDaoImplpublic void setUserDao(UserDao userDao) {this.userDao = userDao;}//调用UserDaoImpl的方法@Overridepublic void addUser(User user) {Logger.info(Level.DEBUGE, "DEBUGE,增加用户前");userDao.addUser(user);Logger.info(Level.INFO, "INFO,增加用户后");}@Overridepublic void deleteUser(User user) {}@Overridepublic boolean updateUser(User user) {return false;}}
代理类和被代理类都实现了UserDao这个接口,在spring.xml配置文件中将实现了UserDao的UserProxy注入到UserSeriveImpl中,利用接口回调调用addUser方法。

     spring.xml文件:

 <beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:cache="http://www.springframework.org/schema/cache"xmlns:p="http://www.springframework.org/schema/p"   xsi:schemaLocation="http://www.springframework.org/schema/beans                        http://www.springframework.org/schema/beans/spring-beans.xsd                        http://www.springframework.org/schema/context                   http://www.springframework.org/schema/context/spring-context-3.0.xsd">    <bean id="userServiceImpl" class="com.spriProxy.service.impl.UserServiceImpl">          <property name="userDao" ref="userProxy"></property>    </bean>    <bean id="userDaoImpl" class="com.spriProxy.dao.impl.UserDaoImpl"/>    <bean id="userProxy" class="com.spriProxy.util.impl.UserProxy">          <property name="userDao" ref="userDaoImpl"></property>    </bean> </beans>
    测试类:

package com.spriProxy.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spriProxy.entity.User;import com.spriProxy.service.impl.UserServiceImpl;public class Test {public static void main(String[] args) {User user = new User("StaticProxy");    ApplicationContext context = new ClassPathXmlApplicationContext("com/spriProxy/config/spring.xml");    UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("userServiceImpl");     userServiceImpl.addUser(user);}}
   运行结果:


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米5数据上网慢怎么办 小米5c照相模糊怎么办 小米5充电很慢怎么办 iphone图库照片没了怎么办 我想通过微信号得到手机号怎么办 给充电宝充电慢怎么办 小米5s充不了电怎么办 百度网盘下载速度慢怎么办 负债累累没有钱没有资源怎么办 好福利密码忘了怎么办 手机无法申请百度网盘怎么办 魅族手机运行慢怎么办 阿里小宝卡流量用完了怎么办 阿里宝卡流量用完了怎么办 百度网盘本地空间不足怎么办 百度网盘空间不足怎么办 百度网盘容量不够怎么办 百度网盘内存不够怎么办 百度网盘储存空间不足怎么办 百度网盘手机号注销了怎么办 手机系统升级后照片没了怎么办 换手机照片没了怎么办 苹果手机icloud满了怎么办 百度网盘密码忘记怎么办 手机卡不用了支付宝账号怎么办 手机校园网不弹出登录界面怎么办 百度云需要邮箱验证怎么办 网页百度网盘不播放视频怎么办 手机qq邮箱中转站容量不足怎么办 qq邮箱容量满了怎么办 手机邮箱中转站容量不足怎么办 微信号登陆要好友验证怎么办 邮箱账号名忘了怎么办 苹果六话筒坏了怎么办 iphone后置摄像头坏了怎么办 苹果8听歌声音小怎么办 酷狗音乐没了怎么办 手机听歌音量小怎么办 苹果手机酷狗音乐打不开怎么办 电脑酷狗音乐打不开怎么办 酷狗音乐无法运行播放怎么办?