`
whtmonkey
  • 浏览: 2022 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring 中动态代理

 
阅读更多

 

必须实现java.lang.reflect.InvocationHandler;下的InvacationHandler 接口。

 

 

 import java.lang.reflect.InvocationHandler;
		import java.lang.reflect.Method;
		import java.lang.reflect.Proxy;
		import com.svse.annotation.LogInfo;
	
		/**
		 * 动态代理类,用于实现日志的记录
		 * 1、创建一个类,实现InvocationHandler 接口,成为代理类
		 * @author Administrator
		 *
		 */
		public class LogProxy implements InvocationHandler {
			
			//注意:将构造方法设为私有,禁止外部进行访问
			private LogProxy(){}
			
			//2、创建一个代理对象
			private Object target;
			
			/**
			 * 3、创建一个方法来生成对象,这个方法的参数传入的是需要代理的对象
			 *	  方法返回的对象就是代理对象;
			 */
			public static Object getInstance(Object o){
				LogProxy logProxy = new LogProxy();
				logProxy.target = o;
				
				//此时得到的对象就是代理对象;
				/* 参一:要代理对象的classloader
				 * 参二:要代理对象实现所有的接口;
				 * 参三:实现InvocationHandler接口的类的对象;
				*/
				Object result = Proxy.newProxyInstance(o.getClass().getClassLoader(),o.getClass().getInterfaces(),logProxy);
				return result;
			}
		
			/**
			 * 有了代理对象之后,不管这个代理对象调用哪个方法都会默认的先执行invoke()这个方法
			 */
			public Object invoke(Object arg0, Method method, Object[] arg2)
					throws Throwable {	
												
				// 此方法中用户代理所做的事情
				
				return method.invoke(this.target, arg2);
			}
		
		}
		
		配置文件中:
		<!-- 代理类 :-->
		<bean id="userDynamicProxyImpl" class="com.svse.proxy.LogProxy" factory-method="getInstance">
			<!-- 此时引用的对象就是代理的对象,一般的代理的是接口的实现类 -->
			<constructor-arg ref="userImpl"></constructor-arg>
		</bean>

 

 

分享到:
评论

相关推荐

    spring+动态代理

    在本篇中,我们将深入探讨Spring如何使用动态代理以及其在实际开发中的应用。 动态代理的核心概念是JDK的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。Proxy类用于创建一个代理对象,...

    spring 的动态代理详解

    本文将深入探讨Spring中动态代理的机制、关键概念以及其实现细节。 #### 动态代理概述 动态代理,顾名思义,是指在运行时动态生成代理对象的过程。与静态代理相比,它不需要在编译阶段就定义好代理类,而是通过...

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

    在静态代理中,我们需要手动创建代理类并实现相同的方法,然后在代理类的方法中插入增强代码。相比于Spring动态代理,静态代理的灵活性较低,但理解起来相对简单。 通过学习这个简单的例子,我们可以更好地理解...

    spring之AOP(动态代理)

    在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...

    spring jdk动态代理

    Spring AOP中的JDK动态代理与上述示例类似,只是Spring会自动处理代理对象的创建和`InvocationHandler`的设置。Spring通过`DefaultAopProxyFactory`和`JdkDynamicAopProxy`类来实现这一过程。在配置了AOP代理后,当...

    四、Spring源码分析——动态代理

    在Spring框架中,动态代理是实现AOP(面向切面编程)的核心技术之一。它允许我们在不修改原有代码的情况下,为方法添加额外的功能,如事务管理、日志记录等。本篇文章将深入探讨Spring中的动态代理机制,以及它是...

    Spring框架中JDK动态代理和cglib动态代理

    在 JDK 动态代理中,我们可以使用 InvocationHandler 来处理方法的调用。InvocationHandler 是一个接口,它定义了 invoke 方法,该方法将被代理对象的方法调用转发到 InvocationHandler 的 invoke 方法中。在 invoke...

    Spring的静态代理和动态代理

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

    spring动态代理

    Spring 动态代理是 Spring 框架中的一个重要特性,它允许我们在运行时自动生成代理对象,以便在方法调用前后执行额外的操作,比如事务管理、AOP(面向切面编程)等。动态代理主要涉及两个核心接口:`java.lang....

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    CGLIB(Code Generation Library)是一个开源的代码生成库,它允许运行时在内存中动态生成类和对象。 在Spring AOP中,我们通常使用@Aspect注解来定义切面类。切面类中可以包含多个通知(Advice),包括前置通知...

    动态代理和注解Spring.rar

    本资料“动态代理和注解Spring.rar”着重介绍了Spring框架中的两个关键概念:动态代理和注解的使用。 首先,我们来深入了解Spring中的动态代理。动态代理在Spring AOP(面向切面编程)中扮演着重要角色。AOP允许...

    Spring动态代理

    在Spring框架中,动态代理是一种重要的技术,它主要用于AOP(面向切面编程)场景,如日志记录、事务管理等。本篇文章将深入探讨Spring动态代理及其在Spring MVC中的应用,特别是在创建RESTful服务时如何利用注解来...

    Spring框架+SpringAOP动态代理

    在探讨Spring AOP(Aspect-Oriented Programming,面向切面编程)中的动态代理之前,我们首先简要回顾一下AOP的基本概念。面向切面编程是一种编程范式,其目的是为了更好地管理那些横跨应用多个模块的功能,如事务...

    Java动态代理(Spring Aop原理)

    在Spring框架中,AOP(面向切面编程)就是基于Java动态代理来完成的,用于实现横切关注点,如日志、事务管理等。这篇博客的文章链接虽然没有给出具体内容,但我们可以根据Java动态代理和Spring AOP的基本概念来深入...

    spring使用动态代理面向切面编程(AOP) xml

    二、Spring中的动态代理 Spring支持两种类型的动态代理:JDK动态代理和CGLIB代理。JDK动态代理基于接口,适用于目标对象实现了至少一个接口的情况。CGLIB代理则是在运行时动态生成一个目标类的子类,用于没有接口或...

    SPRING对动态代理的封装

    动态代理是Spring实现AOP功能的关键技术之一,它允许我们无需修改原有代码就能添加额外的功能或行为。这篇博客将深入探讨Spring如何封装动态代理,并介绍相关的核心概念和实现细节。 首先,我们要理解什么是动态...

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

    本文将深入探讨如何在Spring中通过自定义工具类获取代理对象所代理的目标对象。 ### 核心概念:AOP与Spring Proxy 在理解如何获取目标对象之前,我们需要先了解Spring AOP的实现机制。Spring AOP主要通过动态代理...

    JDK动态代理 spring aop 的原理

    Spring AOP则是在Spring框架中对AOP概念的实现,它利用了JDK动态代理或CGLIB(字节码增强)来实现。Spring AOP的主要目标是分离关注点,将非业务逻辑(如日志、事务管理)从核心业务代码中解耦出来。以下是Spring ...

    Spring CGLlB动态代理实现过程解析

    Spring CGLIB动态代理是Spring框架中的一种动态代理机制,它通过CGLIB(Code Generation Library)生成代理类来实现动态代理。CGLIB是一个高性能的开源代码生成包,能够在运行时生成指定对象的子类,从而实现动态...

    spring动态代理原理

    - 在Spring AOP中,有两种动态代理方式:JDK动态代理和CGLIB代理。JDK代理适用于目标对象实现了一个或多个接口的情况,而CGLIB代理则在目标对象没有接口或者接口数量多且复杂时使用。 - Spring会根据目标对象是否...

Global site tag (gtag.js) - Google Analytics