在Java中,其反射和动态代理机制极其强大,我们可以通过其反 射机制在运行时获取信息。而代理是一种基本的设计模式,它是一种为了提供额外的或不同的操作而插入到真 实对象中的某个对象。而 Java的动态代理在代理上更进一步,既能动态的创建代理对象,又能动态的调用代理 方法。Java的反射和动态代理机制,使 Java变得更加强大。 Spring框架这几年风头正劲, 虽然使用者众多,但真正了解其内部实现原理的朋友却并不是很多。其实,了解它的内部实现机制和设计思想 是很有必要的大家都知道,Spring框架的 IOC和AOP部分功能强大,很值得我们学习。那么让我们在这两篇文章 中分别详细的学习 IOC和AOP的实现吧。 在本文中,主要讲述的是用 Java的反射机制实现 IOC。下 面,让我们开始 IOC之旅吧! 一. Java反射机制概述与初探 Java的反射机制是 Java语言的一个重要特性,Java具有的 比较突出的动态机制就是反射(reflection)。通过它,我们可以获取如下信息: 1) 在运行时判断任意一个对象所属的类; 2) 在运行时获取类的对象; 3) 在运行时获得类所具有的成员变量和方法等 。 下面让我们通过调用一个 Java Reflection API的演示实 例来见识一下反射机制的强大。 首先在IDE中建立名为 reflection_proxy的 Java工程,并 建立存放源文件的目录 src,并在src目录下分别建立 org.amigo. reflection目录和org.amigo.proxy目录来分 别存放代理和反射的实例。我们在reflection目录下建立 ReflectionTest.java文件,在该文件中编写代码来 演示 Java Reflection API的使用。该类的代码如下所示: package org.amigo.reflection; import java.awt.Button; import java.lang.reflect.Method; import java.util.Hashtable; /** *初探 Java的反射机制. *@author
AmigoXie *Creationdate:2007-10-2-上午 10:13:48 */ publicclass ReflectionTest { /** *@paramargs */ publicstaticvoid main(String[] args) throws Exception { ReflectionTest reflection = new ReflectionTest(); reflection.getNameTest(); System.out.println(""); reflection.getMethodTest(); } /** *Class的getName()方法测试. *@throwsException */ publicvoid getNameTest() throws Exception { System.out.println("===========begin get...