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(面向切面编程)的概念,如日志、...
在数据库连接池的例子中,动态代理可以用来创建一个代理数据库连接,这个代理在获取连接时,可以自动地进行连接池的管理和资源调度。 在实际的数据库连接池实现中,我们通常会有一个`ConnectionPool`类作为装饰器,...
通过这个"易语言-动态代理转发例子"源码,开发者可以学习到如何在易语言环境下搭建一个简单的代理服务器,从而加深对网络编程和代理原理的理解。这不仅有助于提升编程技能,也为解决实际问题提供了参考。在分析和...
这个“反射小例子(自己写的,绝对是正确的)”旨在为初学者提供一个易于理解的实践教程,帮助他们掌握这一关键概念。 反射的核心在于`java.lang.Class`类和`java.lang.reflect`包中的相关类。当你知道类的全名...
自己写的小例子,供学习参考。 public class StaticProxy implements Hello{ private HelloSpecker helloSpecker; public StaticProxy() { } public StaticProxy(HelloSpecker helloSpecker) { super(); ...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,甚至能够在运行时创建和操作类的对象。反射机制是通过`java.lang.reflect`包中的类和接口实现的,它为我们提供了对程序...
在Java编程中,动态代理是一种强大的机制,它允许我们在运行时创建代理类,这些代理类可以代表或增强原始目标类的行为。动态代理通常用于实现AOP(面向切面编程)或者提供诸如日志、事务管理等跨切面的功能。本文将...
Java动态代理是Java编程中一个非常重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以代替原对象执行某些额外的操作,例如日志记录、性能监控、事务管理等,这些都是面向切面编程(AOP)的核心应用场景...
在本例"自己写的uitablelistviewcell的例子GifManager"中,开发者自定义了一个`UITableViewCell`子类,实现了对GIF图片的管理,这在显示动态内容时非常有用。 首先,我们需要理解`UITableViewCell`的生命周期和...
MyBatis提供动态代理机制,可以通过注解`@Mapper`将Mapper接口自动代理成实现类。Spring Boot项目中,只需在配置类中启用MyBatis自动配置,并扫描Mapper接口所在的包。 ```java @Configuration @...
随着Java等语言的发展,动态代理(如Java的`java.lang.reflect.Proxy`)和C#的`System.Reflection.Emit`等技术,可以更灵活地创建代理对象,克服了静态代理的部分局限性。 总之,静态代理模式提供了一种在不修改...
标题中的“自己写的静态页面大屏”指的是一个个人创建的、用于大屏幕展示的静态网页。这类网页通常不依赖服务器端动态数据,而是通过HTML、CSS和JavaScript等前端技术实现,便于快速部署和访问。这样的页面可能包含...
本例子是一个关于如何在Spring框架中实现AOP的应用实例。 标题中的"aop例子aop例子"表明我们将探讨Spring AOP的实践应用。Spring是Java领域中最流行的框架之一,它提供了对AOP的强大支持,使得我们可以方便地创建和...
标题中的“IOCAOPDynaFactoryProxy综合例子1.0(推荐)”是一个示例项目,旨在帮助用户深入理解Spring框架中的关键概念,包括IoC(Inversion of Control,控制反转)、AOP(Aspect-Oriented Programming,面向切面编程...
在这个例子中,`SampleDelegate`是一个泛型委托,它可以用于处理任何类型的数据。这里我们将`T`设为`string`类型,`S`设为`int`类型,因此这个委托可以处理字符串和整数作为输入。 #### 二、委托与事件 **委托的...
这个小例子中,Struts2、MyBatis3和Spring3的集成通常会通过Spring的Action代理实现,这样Struts2的动作类可以在Spring的容器管理下,享受依赖注入带来的便利。同时,MyBatis3的SqlSessionFactory和SqlSession可以在...
这个例子中,我们创建了一个名为"MyClass"的类,它有一个名为"MyProperty"的属性,属性有默认值10。这个类可以通过dynamic关键字实例化,并能正常读写属性。 五、应用场景 1. 动态插件:在运行时加载并执行用户编写...
当我们谈论"VC++写的小型HTTP服务器源程序"时,这意味着开发者使用VC++来实现了一个能够响应HTTP请求并返回适当HTTP响应的简易服务器。 HTTP服务器的基本工作原理是监听客户端(如Web浏览器)的连接,接收HTTP请求...