`
lpm528
  • 浏览: 83431 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

自己写的一个动态代理的小例子

 
阅读更多
package com.chinasoft.service;

public interface UserService {
	
	public void add();

}

 

package com.chinasoft.service;

public class UserServiceimpl implements UserService {

	
	public void add() {
		System.out.println("增加用户");
	}

}

 

public class ServiceProxy implements InvocationHandler{
	private Object obj;
	
	public ServiceProxy(Object obj) {
			super();
			this.obj = obj;
		}
//这个方法用来获取代理对象
public static Object getProxy(Object object){
	  Object ret= Proxy.newProxyInstance(object.getClass().getClassLoader(), 
			                  object.getClass().getInterfaces(), 
			                  new ServiceProxy(object));
	   return ret;
   }
	//因为实现InvocationHandler接口所以要去实现的方法,在这方法添加额外所需逻辑
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
	    System.out.println("验证..........");          //在实际要操作的方法前添加所需逻辑
	    System.out.println("事务开始!!!!!!!!");
		
	    Object ob=method.invoke(obj, args);   //obj是实际要操作的方法
		
	    System.out.println("事务结束!!!!!!!!");    //在实际要操作的方法后添加所需逻辑
		return ob;
	}
	
}

 

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		UserServiceimpl  ul=new UserServiceimpl();    //new出实际要去执行的类
		UserService us=(UserService) ServiceProxy.getProxy(ul);//把这对象传给代理
		us.add();

	}

}

 输出结果为:

验证..........
事务开始!!!!!!!!
增加用户
事务结束!!!!!!!!

 

分享到:
评论

相关推荐

    动态代理例子

    动态代理在Java编程中是一种非常重要的技术,它允许我们在运行时创建代理类,这些代理类可以作为原有类的“中间人”,在调用原始方法之前或之后执行额外的操作。这通常用于实现AOP(面向切面编程)的概念,如日志、...

    java装饰模式及动态代理模式示例源码

    在数据库连接池的例子中,动态代理可以用来创建一个代理数据库连接,这个代理在获取连接时,可以自动地进行连接池的管理和资源调度。 在实际的数据库连接池实现中,我们通常会有一个`ConnectionPool`类作为装饰器,...

    易语言-动态代理转发例子

    通过这个"易语言-动态代理转发例子"源码,开发者可以学习到如何在易语言环境下搭建一个简单的代理服务器,从而加深对网络编程和代理原理的理解。这不仅有助于提升编程技能,也为解决实际问题提供了参考。在分析和...

    反射小例子(自己写的,绝对是正确的)

    这个“反射小例子(自己写的,绝对是正确的)”旨在为初学者提供一个易于理解的实践教程,帮助他们掌握这一关键概念。 反射的核心在于`java.lang.Class`类和`java.lang.reflect`包中的相关类。当你知道类的全名...

    静态代理 动态代理 jdk Proxy

    自己写的小例子,供学习参考。 public class StaticProxy implements Hello{ private HelloSpecker helloSpecker; public StaticProxy() { } public StaticProxy(HelloSpecker helloSpecker) { super(); ...

    Java反射及动态代理

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,甚至能够在运行时创建和操作类的对象。反射机制是通过`java.lang.reflect`包中的类和接口实现的,它为我们提供了对程序...

    Java动态代理[动态类Proxy的使用]

    在Java编程中,动态代理是一种强大的机制,它允许我们在运行时创建代理类,这些代理类可以代表或增强原始目标类的行为。动态代理通常用于实现AOP(面向切面编程)或者提供诸如日志、事务管理等跨切面的功能。本文将...

    java使用动态代理来实现AOP(日志记录)的实例代码共6

    Java动态代理是Java编程中一个非常重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以代替原对象执行某些额外的操作,例如日志记录、性能监控、事务管理等,这些都是面向切面编程(AOP)的核心应用场景...

    自己写的uitablelistviewcell的例子GifManager

    在本例"自己写的uitablelistviewcell的例子GifManager"中,开发者自定义了一个`UITableViewCell`子类,实现了对GIF图片的管理,这在显示动态内容时非常有用。 首先,我们需要理解`UITableViewCell`的生命周期和...

    mybatis增删改查小例子(包括Dao开发和Mapper代理开发)

    MyBatis提供动态代理机制,可以通过注解`@Mapper`将Mapper接口自动代理成实现类。Spring Boot项目中,只需在配置类中启用MyBatis自动配置,并扫描Mapper接口所在的包。 ```java @Configuration @...

    优秀的设计模式示例-静态代理模式

    随着Java等语言的发展,动态代理(如Java的`java.lang.reflect.Proxy`)和C#的`System.Reflection.Emit`等技术,可以更灵活地创建代理对象,克服了静态代理的部分局限性。 总之,静态代理模式提供了一种在不修改...

    自己写的静态页面大屏,留个备份自己用

    标题中的“自己写的静态页面大屏”指的是一个个人创建的、用于大屏幕展示的静态网页。这类网页通常不依赖服务器端动态数据,而是通过HTML、CSS和JavaScript等前端技术实现,便于快速部署和访问。这样的页面可能包含...

    aop例子aop例子

    本例子是一个关于如何在Spring框架中实现AOP的应用实例。 标题中的"aop例子aop例子"表明我们将探讨Spring AOP的实践应用。Spring是Java领域中最流行的框架之一,它提供了对AOP的强大支持,使得我们可以方便地创建和...

    IOCAOPDynaFactoryProxy综合例子1.0(推荐)

    标题中的“IOCAOPDynaFactoryProxy综合例子1.0(推荐)”是一个示例项目,旨在帮助用户深入理解Spring框架中的关键概念,包括IoC(Inversion of Control,控制反转)、AOP(Aspect-Oriented Programming,面向切面编程...

    C# 代理 委托 事件 反射.pdf

    在这个例子中,`SampleDelegate`是一个泛型委托,它可以用于处理任何类型的数据。这里我们将`T`设为`string`类型,`S`设为`int`类型,因此这个委托可以处理字符串和整数作为输入。 #### 二、委托与事件 **委托的...

    struts2+mybatis3+spring3小例子

    这个小例子中,Struts2、MyBatis3和Spring3的集成通常会通过Spring的Action代理实现,这样Struts2的动作类可以在Spring的容器管理下,享受依赖注入带来的便利。同时,MyBatis3的SqlSessionFactory和SqlSession可以在...

    .net c#动态创建程序集、类、属性、方法等

    这个例子中,我们创建了一个名为"MyClass"的类,它有一个名为"MyProperty"的属性,属性有默认值10。这个类可以通过dynamic关键字实例化,并能正常读写属性。 五、应用场景 1. 动态插件:在运行时加载并执行用户编写...

    VC++写的小型HTTP服务器源程序

    当我们谈论"VC++写的小型HTTP服务器源程序"时,这意味着开发者使用VC++来实现了一个能够响应HTTP请求并返回适当HTTP响应的简易服务器。 HTTP服务器的基本工作原理是监听客户端(如Web浏览器)的连接,接收HTTP请求...

Global site tag (gtag.js) - Google Analytics