java reflect and annotation programming

通过使用spring的aop,反过来查看了一下java的反射机制和注释功能

 

一、反射:

设计到的java类包括:Class,Constructor,Field,Method,Proxy,InvocationHandler接口

Class:java实例对象所属的类

Constructor: java类的构造方法

Field:java类的属性。可以获取所有属性名称、修饰符等内容

Method:java类的行为操作(方法),可以获取所有方法名称、修饰符及进行方法调用(method.invoke(object,obj[]))

Proxy:生成代理类

InvocationHandler接口:实现代理类方法执行时,业务处理操作。可以在指定的方法执行前、后的位置,添加相应的业务逻辑操作。

Proxy.newProxyInstance(classLoader,interfaces,handler);

一般使用接口+接口实现类+业务逻辑方式实现:在方法执行前后位置添加特殊处理逻辑等操作

接口:为代理生成对象类别

接口实现类:为handler中方法执行绑定对象

业务逻辑:可以在handler中实现

 

二、注释

声明注释:

@Retention(value=RetentionPolicy.RUNTIME)//指定运行时有效

@Target(value=ElementType.METHOD)//绑定方法注释

public @interface AnnoTest{

public abstract value();//注释使用的参数

}

标记注释:

public class Test{

@AnnoTest(value="annotation test...")

public void test(){

}

}

调用注释:

public static void main(String[] args){

Method[] mds = Test.class.getDeclaredMethods();

for(int i = 0;i < mds.length;i++){

Method md = mds[i];

String vl = md.getAnnotation(AnnoTest.class) .value()

}

}

 

 

附注:java反射详解参考:

http://java.sun.com/developer/technicalArticles/ALT/Reflection/

 

你可能感兴趣的:(java,spring,AOP,sun)