`
hngmduyi
  • 浏览: 335721 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jdk 动态代理使用

阅读更多
public interface User {
	
	void save();

}
public class UserImpl implements User {

	public void save() {
		System.out.println("save");
	}
	
	public static void main(String[] args) {
		UserHandler handler=new UserHandler();
		User service=(User) handler.bind(new UserImpl());
		service.save();
	}

}

 

public class UserHandler implements InvocationHandler {
	private Object target;
	
	public Object bind(Object target){
		this.target=target;
		return Proxy.newProxyInstance(target.getClass().getClassLoader(),
				target.getClass().getInterfaces(),this);
	}

	public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
		Object result = null;
		long start = System.currentTimeMillis();
		result = method.invoke(target, args);
		long end=System.currentTimeMillis();
		System.out.println("方法耗时=="+(end-start)/1000);
		return result;
	}

}

 PS:原理还没彻底搞懂,主要反射那块,抽空再深入研究一下,先记录。

分享到:
评论

相关推荐

    jdk 的动态代理和CGLIB代理

    jdk 的动态代理和CGLIB代理

    jdk动态代理使用及实现分析.one

    jdk动态代理使用及实现分析.one

    JDK动态代理_JDK动态代理

    下面是一个简单的示例,演示了如何使用JDK动态代理为一个接口创建代理对象,并在方法调用前后添加日志记录功能。 ```java /** * 业务接口 */ public interface IHello { void hello(String name); } /** * ...

    浅谈JDK动态代理与CGLIB代理去区别

    在"通过Configuration文件实现AOP.docx"文档中,可能会详细讲述如何在Spring配置文件中配置AOP代理,包括如何选择使用JDK动态代理还是CGLIB。 总结来说,JDK动态代理简单且高效,适合接口驱动的设计,而CGLIB适用于...

    关于jdk动态代理的源码剖析

    - **只能代理实现了接口的类**:这是JDK动态代理的一个限制,如果目标对象没有实现任何接口,则无法使用JDK动态代理。 - **性能开销**:虽然这种开销通常很小,但在高并发场景下可能会成为瓶颈。 通过上述分析,...

    jdk动态代理使用[文].pdf

    这里我们将深入探讨JDK动态代理的使用方法和原理。 首先,要使用JDK动态代理,你需要确保你的被代理类实现了至少一个接口。在这个例子中,我们创建了一个名为`Speak`的接口,它包含一个`speak`方法,接收一个字符串...

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

    CGLIB 动态代理使用 ASM 字节码工具来生成代理类。CGLIB 动态代理可以代理没有接口的类,這是因为 CGLIB 动态代理可以生成一个原类的子类,然后 override 原类的方法来实现代理。 在 Spring AOP 框架中,默认情况下...

    jdk动态代理技术详解

    例如,可以使用动态代理来实现记忆功能、数据库连接池、事务控制、AOP 等。动态代理的优点在于可以在不修改原有代码的情况下,增加新的功能,从而提高软件的灵活性和扩展性。 结论 JDK 动态代理技术是 Java 语言...

    JDK动态代理源码

    在Java编程领域,JDK动态代理是一个非常重要的概念,它允许我们在运行时动态地创建一个实现了特定接口的代理对象,以此来拦截并扩展原有对象的行为。动态代理在很多场景下都有应用,比如AOP(面向切面编程)、事件...

    JDK动态代理简单示例

    下面我们将深入探讨JDK动态代理的原理、使用方式以及其在实际开发中的应用。 首先,我们要了解JDK动态代理的基本概念。在Java中,动态代理是通过java.lang.reflect包下的两个类实现的:Proxy和InvocationHandler。...

    JDK动态代理 spring aop 的原理

    4. 代理的创建:Spring根据目标对象是否实现接口来决定使用JDK动态代理还是CGLIB。如果目标对象实现了接口,Spring将使用JDK动态代理;否则,使用CGLIB生成一个子类来作为代理。 5. AOP代理的使用:当通过Spring的...

    AOP之JDK动态代理和CGLib动态代理

    Spring框架是AOP实现的一个典范,它提供了两种主要的动态代理方式:JDK动态代理和CGLib动态代理。 **JDK动态代理**: JDK动态代理基于Java的反射API实现,适用于接口代理。当目标对象实现了至少一个接口时,Spring...

    jdk动态代理和CGlib动态代理

    2. **Callback接口**:类似于JDK动态代理的`InvocationHandler`,CGlib使用`Callback`接口来处理方法调用。常见的`Callback`实现有`MethodInterceptor`,它允许我们在方法调用前后插入自定义逻辑。 3. **ASM库**:...

    springboot中的 动态代理的选择测试代码

    在描述中提到的博客文章"测试springboot使用动态代理时候的一些代码"中,作者可能展示了如何配置Spring Boot的AOP,以及如何编写切面(Aspect)来定义通知(Advice),比如前置通知、后置通知、环绕通知等。...

    java代理机制 JDK动态代理和cglib代理 详解

    - **JDK动态代理**:适用于目标类已经实现接口的情况,使用简单,但只能针对接口进行代理。 - **CGLIB代理**:更适合未实现接口的类,更灵活,但生成代理类的速度较慢,因为涉及到字节码的生成。 总结: Java代理...

    代理模式,JDK动态代理,SpringAOP来龙去脉

    在Java中,我们可以使用JDK的动态代理或者Spring AOP来实现代理模式。 JDK动态代理主要依赖于`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。Proxy类是生成代理对象的工厂,而...

    jdk与cglib动态代理与底层实现

    - **JDK代理**:JDK动态代理使用反射和InvocationHandler接口生成一个实现了目标接口的新类。在运行时,这个新类的实例作为代理对象,它的方法调用都会转发到InvocationHandler的`invoke()`方法。 - **CGLIB代理**...

    JDK动态代理和CGLIB代理

    JDK动态代理和CGLIB代理是两种常用的实现方式。 首先,我们来看看JDK动态代理。JDK动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。Proxy类用于创建一个代理对象...

    Jdk动态代理和cglib动态代理原理

    - **CGLIB代理**适用于目标类没有接口或者不希望修改原有接口的情况,其性能通常优于JDK代理,因为它是基于字节码生成的子类,而JDK代理需要反射调用接口方法。 在实际开发中,如Spring AOP框架就同时支持JDK和...

Global site tag (gtag.js) - Google Analytics