`

Java 类加载器、动态代理类等(系列下)

阅读更多

 

@version 1.0 2011.01.12


9,类加载器

→类加载器的委托机制

 

→自定义类加载器编写原理

   扩展1:  http://blog.csdn.net/miyao16/archive/2009/11/30/4909374.aspx

   扩展2:  http://www.iteye.com/topic/136427

 

    

→class文件转换为字节码 defineClass()

→class文件加密

----------------------------------

//自定义加密算法
private static void cypher(InputStream ips ,OutputStream ops) throws Exception{
      int b = -1;
      while((b=ips.read())!=-1){
            ops.write(b ^ 0xff);
      }
}

 

//自定义类加载器 加载加密后的class文件(解密)
public MyClassLoader(){

}
public MyClassLoader(String classDir){
      this.classDir = classDir;
}
private String classDir;
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
      // TODO Auto-generated method stub
      String classFileName = classDir + "\\"  + 
      name.substring(name.lastIndexOf('.')+1) + ".class";
      try {
           FileInputStream fis = new FileInputStream(classFileName);
            ByteArrayOutputStream  bos =  new ByteArrayOutputStream();
            cypher(fis,bos); 
            fis.close();
            System.out.println("aaa");
            byte[] bytes = bos.toByteArray();
            return defineClass(bytes, 0, bytes.length);
      } catch (Exception e) {
            e.printStackTrace();
      }
return null;
}

 

//测试用例
public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    String srcPath = args[0];
    String destDir = args[1];
    FileInputStream fis = new FileInputStream(srcPath);
    String destFileName = srcPath.substring( srcPath.lastIndexOf('\\')+1);
    String destPath = destDir + "\\" + destFileName;
    FileOutputStream fos = new FileOutputStream(destPath);
    cypher(fis,fos);
    fis.close();
    fos.close();
}
 

 


10,动态类

→动态代理类设计原理与方法

 

→可配置AOP框架(spring)分析

 

 

 

 

 




 

分享到:
评论

相关推荐

    JAVA类加载机制与动态代理

    - **动态语言支持**:例如使用`java.lang.reflect.Proxy`类来创建动态代理类。 - **自定义代码生成**:通过编写代码来手动生成代理类的字节码。 ##### 2.2 动态代理的概念 动态代理允许我们为一个接口创建一个代理...

    类加载器(java)

    类加载器的知识不仅仅局限于基础概念,还包括类加载的时机(静态加载、动态加载)、类加载器的实现(如自定义类加载器)、类的卸载、以及类加载器与安全策略的关系等。深入理解和掌握这些知识点,对于开发高效、安全...

    深入探讨 Java 类加载器

    【深入探讨 Java 类加载器】 ...总之,Java类加载器是Java平台灵活性和动态性的关键部分,它的理解对于深入掌握Java技术体系非常重要。无论是解决运行时问题还是设计复杂的系统架构,都需要对类加载器有深刻的认识。

    深入研究Java类加载机制 深入研究Java类加载机制

    虽然Java提供了默认的类加载器,但在某些情况下可能需要自定义类加载器来满足特定的需求,如实现热部署、动态代理等功能。自定义类加载器需要继承`java.lang.ClassLoader`类,并重写`findClass`方法来实现自定义加载...

    java 简答可复用动态代理类

    - `Proxy`类是Java提供的动态代理的工厂,它可以根据一个接口生成实现了该接口的代理类的对象。这个代理类会动态地生成并实现接口的所有方法。 - `InvocationHandler`接口定义了一个处理方法调用的回调方法`invoke...

    java动态代理类的实例

    这个方法需要三个参数:代理类的类加载器、代理类需要实现的接口列表以及我们的`InvocationHandler`实例: ```java MyService realService = new RealService(); // 实现MyService接口的类 MyInvocationHandler ...

    动态编译、加载java类

    3. **URLClassLoader**: 这是Java标准库中的一个类加载器,它可以从指定的URL加载类。通过创建`URLClassLoader`实例并传入包含源码或编译后类的目录或JAR文件的URL,可以在运行时加载新编译的类。 4. **反射...

    java类加载器和核心机制.pdf

    在Java中,类加载器和类加载机制是非常重要的概念,它们使得Java具备了动态加载和热部署的能力,极大地提高了程序的灵活性。类加载器负责将.class文件加载到Java虚拟机中,并生成对应的java.lang.Class对象,以便JVM...

    java 类加载器学习笔记1

    Java的设计允许开发者创建自己的类加载器,实现如代码加密、热部署、从网络加载类等高级功能。 类加载机制遵循两个核心原则: 1. **委托代理加载机制**:当一个类加载器收到加载类的请求时,它首先将请求委托给其...

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

    - 创建代理对象需要三个参数:类加载器、目标接口数组和InvocationHandler实例。 二、CGLIB代理 CGLIB(Code Generation Library)是另一个常用的Java代理库,它不需要目标类实现任何接口,而是通过继承的方式创建...

    java动态代理demo

    Java动态代理基于Java反射机制,可以在运行时动态地创建代理类和代理对象。与静态代理(即手动编写代理类)相比,动态代理无需预先为每个接口编写单独的代理类,使得代码更加灵活且易于维护。 2. **代理接口** 在...

    Java代理模式Java动态代理

    - `ClassLoader loader`: 定义代理类的类加载器。 - `Class[] interfaces`: 代理类要实现的接口列表。 - `InvocationHandler h`: 指派方法调用的调用处理程序。 **4. 示例代码** 为了更好地理解Java动态代理的...

    java动态代理实现详解

    Java 动态代理是Java平台提供的一种强大的工具,它允许我们在运行时动态生成代理类,这些代理类可以实现一组指定的接口,同时还能在方法调用前后添加自定义的行为。这种机制大大简化了面向切面编程(AOP)和事件监听...

    Java类加载内幕

    - **应用程序类加载器 (Application ClassLoader):** 也称为系统类加载器,负责加载当前应用 classpath 下的所有类。这是开发者可以直接操作的类加载器。 #### 四、类加载过程 类加载过程主要包括三个阶段: 1. *...

    Java类加载原理解析文档

    本文将详细解析Java类加载原理,分为三篇文章进行阐述,分别是:Java类加载原理解析、插件环境下类加载原理解析和线程上下文类加载器。 首先,我们来了解Java虚拟机(JVM)的类加载器结构。JVM预定义了三种主要的类...

    JAVA 反射机制与动态代理ppt

    反射机制的核心在于Java提供的`java.lang.reflect`包,其中包括了`Class`、`Field`、`Method`、`Constructor`和`Array`等类,它们分别用于表示类、字段、方法、构造器和数组的相关信息。 1. **Class类**:每个类在...

    java动态代理详细解析

    `Proxy.newProxyInstance()`方法则用于创建代理对象,它需要`ClassLoader`(加载代理类的类加载器)、`Class[] interfaces`(代理类需要实现的接口数组)和`InvocationHandler`实例作为参数。 示例代码中的`...

    Java实现动态代理

    - 除了Java标准库提供的动态代理,还可以使用第三方库如CGLIB、ASM等,它们可以通过字节码操作来生成非接口类型的代理类,提供了更灵活的代理机制。 以上就是Java动态代理的基本知识及其在实际应用中的体现。希望...

    java动态代理实例

    Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,以便在调用真实目标对象的方法时添加额外的功能或行为。在这个实例中,我们将深入探讨Java动态代理的核心概念,...

    Java动态代理两种实现方式

    然后,我们使用`Proxy.newProxyInstance`方法创建代理对象,传入目标对象的类加载器、目标对象实现的接口列表以及我们实现的InvocationHandler。 ```java Class[] interfaces = target.getClass().getInterfaces();...

Global site tag (gtag.js) - Google Analytics