本人刚学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模拟aop静态代理案例"旨在帮助开发者深入理解Spring AOP在实际应用中的运作方式,特别是静态代理的概念。 AOP(Aspect Oriented Programming)是一种编程范式,它允许程序员将关注点(如日志、事务...
Spring框架AOP静态代理 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在通过将横切关注点(如日志记录、事务管理等)从主业务逻辑中分离出来,提高代码的模块化和可维护性。 静态代理是在...
主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...
文件名`test_spring_static_proxy`暗示了笔记可能包含了关于Spring静态代理的测试案例。通过这样的案例,你可以更好地理解如何在实际项目中应用代理模式,以及如何通过Spring框架创建和使用代理。 总结,Spring学习...
静态代理是在编译时就已经明确知道代理类和被代理类关系的方式,而Spring的动态代理则是在运行时生成代理类。在静态代理中,我们需要手动创建代理类并实现相同的方法,然后在代理类的方法中插入增强代码。相比于...
本资源主要涵盖了静态代理和动态代理两种常见类型的代理模式,以及Spring AOP中动态代理的三种配置方式。以下是详细的知识点解析: ### 静态代理 静态代理是程序员手动创建代理类并实现相同接口的方式。代理类和...
静态代理是通过手动编写代理类来实现代理的,而动态代理则是通过使用代理工厂或代理类生成器来生成代理对象。 二、静态代理 静态代理是通过手动编写代理类来实现代理的。例如,我们可以创建一个MathProxy类,它...
【Spring AOP的静态代理和动态代理】 在软件开发中,代理模式是一种常见的设计模式,它允许我们在不修改原有对象的基础上,对对象的行为进行增强。代理模式的核心思想是通过代理对象来控制对原始对象(也称为委托...
在本篇Spring学习笔记中,我们将探讨静态代理模式在Spring框架中的应用与分析。静态代理是一种常见的设计模式,它在不修改目标类代码的情况下,通过代理类来扩展或增强目标类的功能。在Spring中,静态代理主要应用于...
静态代理--不适合企业开发,适合初学者理解代理。 jdk动态代理--适合企业级开发,但是它要求必须面向接口编程,假如目标类没有实现接口,则没办法代理这个类。 cglib代理, 1.cglib(Code Generation Library)是一...
Spring提供了两种主要的代理方式:静态代理和动态代理。 1. 静态代理: 静态代理是程序员手动创建一个代理类,该类扩展或实现与原始业务类相同的接口,并在代理类的方法中调用实际业务逻辑,同时插入额外的行为。...
Spring AOP里的静态代理和动态代理用法详解 Spring AOP里的静态代理和动态代理用法详解是关于 Spring AOP里的静态代理和动态代理的详细介绍。代理是一种设计模式,通过创建一个代理对象来控制对委托类对象的直接...
代理模式在Java中主要有两种实现方式:静态代理和动态代理,其中动态代理又分为JDK动态代理和CGlib代理。 1. 静态代理 静态代理是程序员手动创建代理类并实现与目标类相同接口的方式。在静态代理中,代理类和目标类...
1. **静态代理**:Spring AOP 提供了两种代理方式,一种是静态代理,另一种是动态代理。静态代理是在编译时就确定了代理类,这种代理方式通常通过实现相同接口的方式创建。然而,Spring AOP默认并不使用静态代理,...
`AopTargetUtils`是Spring AOP模块中的一个辅助类,它提供了若干静态方法来帮助开发者获取代理对象的真实目标对象。这个工具类主要服务于以下两种情况: 1. **JDK动态代理**:当我们的代理对象是由Spring的...
Spring框架是Java开发中广泛使用的轻量级框架,它也提供了强大的代理机制,包括静态代理和动态代理。下面我们将深入探讨这两个概念以及Spring如何实现代理。 1. 静态代理: 静态代理是在编译时就已经明确知道代理...
在Java中,代理模式主要有两种实现方式:静态代理和动态代理。 1. 静态代理: 在静态代理中,我们需要手动创建一个代理类,这个代理类实现了与目标类相同的接口。代理类中会持有目标对象的引用,并在调用目标对象...