`
chenhongwei0924
  • 浏览: 42496 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JdkProxy

阅读更多
package com.albert.spring.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class JdkProxy implements InvocationHandler
{
    private Object target;
    
    public Object createTarget(Object target)
    {
        
        this.target = target;
        /****
         * 参数
         * 1.目标对象的类装载器 
         * 2目标对象的接口 
         * 3回调对象 
         * 生成的代理对象要执行方法时就是依靠这个回调对象的invoke方法来进行目标对象的方法回调
         */
        return Proxy.newProxyInstance(this.target.getClass().getClassLoader(),
            this.target.getClass().getInterfaces(),
            this);
    }
    
    public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable
    {
        StudentDaoImpl udi = (StudentDaoImpl)target;
        Object result = null;
        if (udi.getName() != null)
        {
            result = method.invoke(target, args);
        }
        else
        {
            System.out.println("name is null, can't add stduent ");
        }
        return result;
    }
    
    public static void main(String[] args)
    {
        JdkProxy jdk = new JdkProxy();
        /****
         * JDK的Proxy实现代理要求被代理的目标对象必须实现一个接口,
         * 而如果目标对象没有实现接口则不能使用Proxy来代理
         */
        StudentDao<Student> studentDaoImpl = (StudentDao<Student>)jdk.createTarget(new StudentDaoImpl());
        studentDaoImpl.addStudent();
    }
}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JdkProxy.java

    JdkProxy.java

    Aop jdk proxy实现小例子

    通过JDK Proxy,我们可以在运行时创建一个接口的实现类,并在调用接口方法时插入自定义的处理逻辑,这就是AOP的核心思想——“织入”(Weaving)。下面我们将详细讲解如何使用JDK Proxy实现Aop。 首先,我们需要...

    Spring_0300_JDKProxy

    标题"Spring_0300_JDKProxy"暗示我们将讨论Spring如何使用JDK的Proxy类来实现动态代理。在Spring中,`org.springframework.aop.framework.ProxyFactoryBean`或`org.springframework.aop.framework.ProxyFactory`可以...

    静态代理 动态代理 jdk Proxy

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

    mybatis_jdk_proxy.zip

    针对标题"mybatis_jdk_proxy.zip",我们可以推断这是一个关于MyBatis框架使用Java JDK代理(JDK Proxy)的相关学习资料。下面将详细解释这个主题。 MyBatis是一个流行的持久层框架,它允许开发者通过简单的XML或...

    JDKProxy:用来理解jdk基于接口的动态代理和cglib基于类代理区别的demo

    本示例"JDKProxy"着重于对比两种常见的动态代理技术:JDK的接口代理和CGLIB的类代理。这两种代理方式在Java应用程序中都有广泛的应用,例如在AOP(面向切面编程)框架如Spring中。 首先,我们来深入了解一下JDK的...

    spring练习项目.7z

    proxy,jdkproxy-transaction,jdkproxy-salary,day02-itheima11-spring-08-cglibproxy,day02-itheima11-spring-09-aop.xml,day02-itheima11-spring-10-aop.xml.advice,day02-itheima11-spring-11-aop.xml.exception等...

    使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能

    JDK Proxy是Java提供的一种动态代理机制,它允许我们在运行时创建一个实现了特定接口的新类。这个新类可以作为原有接口的代理,从而在调用接口方法时插入自定义的逻辑。在Spring AOP中,如果目标对象实现了至少一个...

    Java 代理 代理模式 静态代理与动态代理 常见的动态代理实现 .md

    - **基于JDK Proxy的AOP**:当被代理的目标类实现了接口时,Spring会使用JDK Proxy来创建代理对象。 - **基于CGLIB的AOP**:当被代理的目标类没有实现接口时,Spring会选择CGLIB创建代理对象。 #### 6. 示例代码 ...

    《剑指offer》Java代理.pdf

    Spring支持JDK Proxy和CGLIB两种方式实现AOP代理,对于实现了接口的类,优先使用JDK Proxy;对于未实现接口的类,Spring会自动切换到CGLIB。 在上述小明购买香水的例子中,我们可以看到: - 定义了一个`...

    Java 动态代理.md

    JDKProxy jdkProxy = new JDKProxy(userDao); UserDao proxyUserDao = (UserDao) jdkProxy.getProxyInstance(); proxyUserDao.saveUser(); } } ``` ### CGLIB 动态代理 CGLIB(Code Generation Library)是一...

    springIOC核心组件分析.vsdx

    pring源代码各个模块作用 核心模块: 1 spring-core:核心模块 依赖注入IOC和DI的最基本实现 ...spring-aop:面向切面编程,CGLB,JDKProxy spring-aspects:集成AspectJ,Aop应用框架 spring-instrume

    cglib aop spring 动态代理

    静态代理--不适合企业开发,适合初学者理解代理。 jdk动态代理--适合企业级开发,但是它要求必须面向接口编程,假如目标类没有实现接口...spring 的AOP功能中 会根据目标类是否实现了接口来判断使用 jdk Proxy还是cglib

    动态代理cglibjar包和源码

    - JDK Proxy性能相对较慢,因为涉及到反射,而CGLIB通过字节码生成,性能更好。 - JDK Proxy易于理解和使用,CGLIB则需要更深入的字节码知识。 总之,CGLIB作为Java中的动态代理库,通过字节码技术为我们的代码...

    JAVA动态代理

    ### JDK动态代理(JDKProxy) JDK动态代理基于接口实现,它要求代理的目标对象必须实现至少一个接口。以下是对JDK动态代理的详细说明: 1. **Proxy类**:Proxy类是JDK提供的用于创建动态代理类的工具类。通过调用`...

    java常用设计模式及JDK与CGLIB实现动态代理区别(源码)

    package org.sg.sgg.mode.proxy.jdkProxy.trendProxy2; /** * java JDK实现动态代理 * @author * */ public class Test2 { public static void main(String[] args) { UserService userService = new ...

    AOP编程示例

    **AOP编程示例** ...CGlib和JDK Proxy是Spring在底层创建动态代理的两种方式,Spring注解AOP则简化了AOP的配置,提高了开发效率。理解并熟练运用这些技术,对于提高Java应用程序的设计质量和可维护性至关重要。

    JDK动态代理demo

    在提供的压缩包文件`jdkproxy`中,可能包含了示例代码或者更复杂的动态代理实现,例如,可能包含了多个接口、不同的`InvocationHandler`实现,或者展示了如何结合其他框架如Spring进行集成。通过对这些代码的分析和...

    2023版Java面试题.pdf

    :JDK Proxy 使用 Java 反射机制,而 CGLib 使用字节码生成技术。 4. 什么是深克隆和浅克隆?:深克隆是完全复制对象,而浅克隆是只复制对象的引用。 5. 如何实现深克隆?:可以使用对象的 clone() 方法或序列化机制...

    CgLib动态代理所需的jar

    当目标类没有实现接口时,Java的标准动态代理机制JDK Proxy就无法工作,因为JDK Proxy是基于接口的。而CgLib则通过生成目标类的子类来实现动态代理,即使目标类没有接口,也可以进行代理。这使得CgLib在AOP(面向切...

Global site tag (gtag.js) - Google Analytics