`
liang2431
  • 浏览: 7508 次
社区版块
存档分类
最新评论

spring静态代理

    博客分类:
  • j2ee
 
阅读更多

本人刚学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---------
代理添加成功
 
分享到:
评论

相关推荐

    spring+静态代理

    在本主题"spring+静态代理"中,我们将深入探讨如何利用Spring框架来实现静态代理模式,并通过接口回调的方式来增强代码的灵活性和可扩展性。 静态代理是一种设计模式,它允许我们在不修改原始对象(被代理对象)的...

    Spring的静态代理和动态代理

    本篇我们将深入探讨Spring中的静态代理和动态代理,这两种代理模式在实际开发中都有广泛的应用。 首先,让我们理解什么是代理。代理模式是一种设计模式,它为一个对象提供一个代理以控制对这个对象的访问。在Spring...

    Spring模拟aop静态代理案例

    本案例"Spring模拟aop静态代理案例"旨在帮助开发者深入理解Spring AOP在实际应用中的运作方式,特别是静态代理的概念。 AOP(Aspect Oriented Programming)是一种编程范式,它允许程序员将关注点(如日志、事务...

    Spring框架AOP静态代理.pdf

    Spring框架AOP静态代理 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在通过将横切关注点(如日志记录、事务管理等)从主业务逻辑中分离出来,提高代码的模块化和可维护性。 静态代理是在...

    Spring aop 之 静态代理 动态代理 Aspectj aop-config 等实现方式

    主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...

    spring学习笔记(七)

    文件名`test_spring_static_proxy`暗示了笔记可能包含了关于Spring静态代理的测试案例。通过这样的案例,你可以更好地理解如何在实际项目中应用代理模式,以及如何通过Spring框架创建和使用代理。 总结,Spring学习...

    spring动态代理类的示范小版本,很简单的例子

    静态代理是在编译时就已经明确知道代理类和被代理类关系的方式,而Spring的动态代理则是在运行时生成代理类。在静态代理中,我们需要手动创建代理类并实现相同的方法,然后在代理类的方法中插入增强代码。相比于...

    代理设计模式:静态代理和动态代理的理解、实现与区别(优缺点)与SpringAOP的3种配置方式案例工程代码

    本资源主要涵盖了静态代理和动态代理两种常见类型的代理模式,以及Spring AOP中动态代理的三种配置方式。以下是详细的知识点解析: ### 静态代理 静态代理是程序员手动创建代理类并实现相同接口的方式。代理类和...

    Java Spring代理模式AOP-IOC分析

    静态代理是通过手动编写代理类来实现代理的,而动态代理则是通过使用代理工厂或代理类生成器来生成代理对象。 二、静态代理 静态代理是通过手动编写代理类来实现代理的。例如,我们可以创建一个MathProxy类,它...

    Spring AOP的静态代理和动态代理,转移到调用处理器一个集中的方法中处理.docx

    【Spring AOP的静态代理和动态代理】 在软件开发中,代理模式是一种常见的设计模式,它允许我们在不修改原有对象的基础上,对对象的行为进行增强。代理模式的核心思想是通过代理对象来控制对原始对象(也称为委托...

    Spring学习笔记(12)----静态代理模式分析演示

    在本篇Spring学习笔记中,我们将探讨静态代理模式在Spring框架中的应用与分析。静态代理是一种常见的设计模式,它在不修改目标类代码的情况下,通过代理类来扩展或增强目标类的功能。在Spring中,静态代理主要应用于...

    cglib aop spring 动态代理

    静态代理--不适合企业开发,适合初学者理解代理。 jdk动态代理--适合企业级开发,但是它要求必须面向接口编程,假如目标类没有实现接口,则没办法代理这个类。 cglib代理, 1.cglib(Code Generation Library)是一...

    spring 的代理机制

    Spring提供了两种主要的代理方式:静态代理和动态代理。 1. 静态代理: 静态代理是程序员手动创建一个代理类,该类扩展或实现与原始业务类相同的接口,并在代理类的方法中调用实际业务逻辑,同时插入额外的行为。...

    Spring AOP里的静态代理和动态代理用法详解

    Spring AOP里的静态代理和动态代理用法详解 Spring AOP里的静态代理和动态代理用法详解是关于 Spring AOP里的静态代理和动态代理的详细介绍。代理是一种设计模式,通过创建一个代理对象来控制对委托类对象的直接...

    代理模式的各种实现 (动态代理、静态代理)

    代理模式在Java中主要有两种实现方式:静态代理和动态代理,其中动态代理又分为JDK动态代理和CGlib代理。 1. 静态代理 静态代理是程序员手动创建代理类并实现与目标类相同接口的方式。在静态代理中,代理类和目标类...

    springAop默认代理方式.zip

    1. **静态代理**:Spring AOP 提供了两种代理方式,一种是静态代理,另一种是动态代理。静态代理是在编译时就确定了代理类,这种代理方式通常通过实现相同接口的方式创建。然而,Spring AOP默认并不使用静态代理,...

    在spring中获取代理对象代理的目标对象工具类

    `AopTargetUtils`是Spring AOP模块中的一个辅助类,它提供了若干静态方法来帮助开发者获取代理对象的真实目标对象。这个工具类主要服务于以下两种情况: 1. **JDK动态代理**:当我们的代理对象是由Spring的...

    spring代理实现项目

    Spring框架是Java开发中广泛使用的轻量级框架,它也提供了强大的代理机制,包括静态代理和动态代理。下面我们将深入探讨这两个概念以及Spring如何实现代理。 1. 静态代理: 静态代理是在编译时就已经明确知道代理...

    代理模式(含动态代理讲解)【Spring AOP实质】

    在Java中,代理模式主要有两种实现方式:静态代理和动态代理。 1. 静态代理: 在静态代理中,我们需要手动创建一个代理类,这个代理类实现了与目标类相同的接口。代理类中会持有目标对象的引用,并在调用目标对象...

Global site tag (gtag.js) - Google Analytics