`

代理Handler 通用类

 
阅读更多
public class ProxyHandler implements InvocationHandler {

	private Object target;
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result = null;
		if(method.getName().equals("info")){
			System.out.println("事务开始");
			result = method.invoke(target, args);
			System.out.println("事务结束");
		}
		return result;
	}

	public void setTarget(Object o){
		this.target = o;
	}
}

 解耦合

public class MyProxyFactory {

	public static Object getProxy(Object object){
		ProxyHandler handler = new  ProxyHandler();
		handler.setTarget(object);
		return Proxy.newProxyInstance(DogImpl.class.getClassLoader(),DogImpl.class.getInterfaces(), handler);
	}
}

 

分享到:
评论

相关推荐

    3个动态代理实例

    当我们通过`Proxy.newProxyInstance()`方法创建代理对象时,我们需要提供一个InvocationHandler,这个handler将在代理对象的方法被调用时执行自定义逻辑。 第二个实例`TestDynamicProxy2`可能展示了CGLIB库的使用。...

    黑马程序员------代理类中invoke方法注意点

    在Java编程中,代理类(Proxy)是一种设计模式,它允许我们为已有对象创建一个代理对象,以便在调用实际对象的方法之前或之后添加额外的功能。`invoke`方法是Java动态代理中的核心方法,它位于`java.lang.reflect....

    用C#编写的Proxy代理,网络编程参考

    SOCKS是一种通用的代理协议,能处理多种网络协议。SOCKS5提供了身份验证和更高级的安全特性。在C#中,我们需要实现这些处理器来解析和处理SOCKS协议的请求和响应。 6. **make.bat**:这是一个批处理文件,通常用于...

    JAVA的反射机制与动态代理

    通过`Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler handler)`,我们可以生成一个实现了指定接口的代理对象。 2. **InvocationHandler**:这是动态代理的核心,它定义了一个...

    实战HTTP Handler (2) -- 向HTTP 处理程序传递参数 源码

    为了更好地处理和验证参数,你可以使用中间件或自定义函数来封装通用的处理逻辑。例如,创建一个验证参数的中间件: ```go func validateParams(next http.HandlerFunc) http.HandlerFunc { return func(w ...

    深入理解JavaProxy机制.doc

    Java Proxy 机制是Java语言提供的一种动态代理功能,允许我们在运行时创建一个新的类,这个类可以实现一组指定的接口,并且在方法调用时插入自定义的行为。这主要通过`java.lang.reflect.Proxy`类和`java.lang....

    Spring常见面试题

    动态代理需要jdk代理和cglib代理,jdk代理需要类加载器、接口、handler,cglib需要继承被代理类。 Spring框架 Spring框架是一个轻量级的Java开源框架,提供了一个通用的编程模型和配置机制。Spring框架模块有: *...

    java反射机制.rar

    5. 动态代理:Java的Proxy类可以生成动态代理对象,实现接口方法的动态调用。 三、反射机制实例 1. 创建对象实例: ```java Class<?> clazz = Class.forName("com.example.MyClass"); Object obj = clazz.new...

    JAVA_API1.6文档(中文)

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....

    proxy:一个简单的 mongodb 代理

    - `util/` 目录:通用的工具函数,如网络、日志、配置解析等。 - `test/` 目录:单元测试和集成测试代码。 Go 语言的项目结构通常遵循一定的模块化原则,例如,每个功能模块对应一个单独的包(package),代码组织...

    head first设计模式学习代码

    代码中会有Handler接口和多个具体的Handler类。 13. **解释器模式**:给定一种语言,定义其文法的一种表示,并提供一个解释器,用于处理这种语言中的句子。这通常涉及到语法树的构建和遍历。 14. **迭代器模式**:...

    Proxy+ Script Handler-开源

    Proxy+ Script Handler是一款开源软件,主要用于管理Proxy Plus MPP插件。这个工具设计的目的是为了帮助用户更方便地处理和编辑包含脚本信息的外部文件,从而提高工作效率。Proxy Plus MPP插件本身是一个增强型的...

    ibatis.util包

    5. **Objects**: 这是一个通用的工具类,包含了一些静态方法,用于比较、复制和判断对象的各种情况,比如`Objects.equals()`和`Objects.isNull()`。 6. **Strings**: 类似于Java的`java.lang.String`,`ibatis.util...

    learning-netty

    这是一个抽象类,实现了`Channel`接口,提供了部分通用的行为。 #### ChannelFactory 用于创建新的`Channel`实例。 #### ChannelUnsafe 提供了一些不安全的操作,允许用户直接访问底层的NIO操作。 ### ...

    spring工作流程

    - **动态代理**:Spring AOP采用动态代理的方式,只需要编写一个通用的代理类(通常实现InvocationHandler接口),然后利用Java反射机制在运行时动态生成代理对象。 #### 三、Spring的工作原理 Spring框架的核心...

    proxy:Beno.host的官方代理

    - `util.go`:一些辅助函数和工具类,可能包含IP处理、URL解析等通用功能。 在实际应用中,开发者可以通过阅读这些源码来学习如何使用Go语言构建一个高效且可靠的代理服务器。通过深入理解代理服务器的工作原理和Go...

    java api最新7.0

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto....

    JDK_1_6 API

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto...

    JavaAPI1.6中文chm文档 part1

    javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml....

    Mybatis源码分析.pdf

    MyBatis的设计模式也是其强大之处,例如工厂模式用于创建SqlSession,代理模式用于实现动态SQL,单例模式用于管理Configuration对象,责任链模式用于执行SQL等。理解这些设计模式可以帮助我们更好地理解MyBatis的...

Global site tag (gtag.js) - Google Analytics