spring静态代理

本人刚学SSH框架,为了巩固自己所学知识,简单的表达出思想,意在是自己能够看得明白,言语很不专业,希望达人不要板砖,欢迎指正,谢谢!

1.UserManage.java
package com.spring;

public interface UserManage {
	
	public void addUser(String name,String password);
	
	public void delUser(int userId);
	
	public String findUserById(int userId);
	
	public void modify(int userId,String name,String password);

}
  业务很简单,就是打印出一句话。。。。。如下:
2.UserManageImpl
 
package com.spring;

public class UserManageImpl implements UserManage {

	@Override
	public void addUser(String name, String password) {
		//checkSecurity();
		System.out.println("-------UserManageImpl.addUser---------");

	}

	@Override
	public void delUser(int userId) {
		//checkSecurity();
		System.out.println("-------UserManageImpl.delUser---------");

	}

	@Override
	public String findUserById(int userId) {
		//checkSecurity();
		System.out.println("-------UserManageImpl.findUserById---------");
		return "张三";
	}

	@Override
	public void modify(int userId, String name, String password) {
		//checkSecurity();
		System.out.println("-------UserManageImpl.modify---------");

	}

//	private void checkSecurity(){
//		System.out.println("-------这是安全的--------");
//	}
}
 
现在如果需要在现有的业务基础上增加需求,那我们必然需要修改上述代码,这样又会带来重新返工与测试。那么,我们可不可以在现有的基础上,在不改变原来已完成的基础之上,增加需要的业务需求呢?当然是可以的,这就涉及到“代理”。
假如现在要求在每个方法执行前都打印一段话。我们先通过"静态代理"实现。
3.UserManageProxy.java
package com.spring;
/**
 * 静态代理,好处是不用修改以前的代码,但是这样checkSecurity()出现频数很大
 * 
 * @author Administrator
 *
 */
public class UserManageImplProxy implements UserManage {

	private UserManage userManage;
	
	public UserManageImplProxy(UserManage userManage){
		this.userManage = userManage;
	}
	
	@Override
	public void addUser(String name, String password) {
		checkSecurity();
		userManage.addUser(name, password);

	}

	@Override
	public void delUser(int userId) {
		checkSecurity();
		userManage.delUser(userId);

	}

	@Override
	public String findUserById(int userId) {
		checkSecurity();
		return userManage.findUserById(userId);
	}

	@Override
	public void modify(int userId, String name, String password) {
		checkSecurity();
		userManage.modify(userId, name, password);
	}

	private void checkSecurity(){
		System.out.println("-------这是安全的--------");
	}
}
 
4.测试类
import junit.framework.TestCase;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.UserManageImplProxy;

public class Test extends TestCase{
	
	BeanFactory factory = null;
	
	@Override
	//与servlet类似,只执行一次,所以常用于初始化
	protected void setUp() throws Exception {
		factory = new ClassPathXmlApplicationContext("applicationContext.xml");
	}

	@Override
	//与servlet类似,销毁时使用
	protected void tearDown() throws Exception {
		//
	}

	public void testAdd() {
		UserManageImplProxy uip = (UserManageImplProxy)factory.getBean("userManageProxy");
		uip.addUser("user01", "123456");
		System.out.println("代理添加成功");
	}
}

   
总结:
-------这是安全的--------
-------UserManageImpl.addUser---------
代理添加成功
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值