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
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- Spring静态代理
- spring+静态代理
- Spring静态代理
- 【Spring】静态代理
- Spring 代理中的静态代理、动态代理
- spring 代理(静态代理&动态代理&cglib代理)
- Spring AOP(1),静态代理
- 【spring 3】AOP:静态代理
- Spring(AOP静态代理)
- Spring点点滴滴之静态代理
- Spring的静态代理和动态代理
- Spring AOP 静态代理与动态代理
- Spring的静态代理和动态代理
- CentOS SVNServer安装
- Velocity 语法(转)
- Ubuntu 14.04中文输入法的安装
- 迷宫问题
- Unicode字符集和多字节字符集关系
- spring+静态代理
- HDU 3395 Special Fish?费用流(虚拟边)?647★KM(加虚拟边权)
- Go语言之nil详解
- IDF实验室之万里寻踪图片里的秘密
- leetcode database 题目
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- STL源码剖析—整体简要概述
- AsynImageLoader andriod异步加载图片类
- Vector Clock算法的理解