Java 内省机制

原创 2016年05月30日 20:44:03

Java 内省机制    

      Java的内省机制其实就是基于java反射专门用于操作bean的属性的API。或者说内省是java语言对bean类属性,事件的一种缺省处理方法。

      JavaBean:是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进javaBean中,这种对象称为值对象,方法较少,信息通过类的私有变量的get,set方法获得。

      最常见的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器材(PropertyDescriptor,通过这个属性描述器来获取某个属性对应的get/set方法,然后我们就可以通过反射机制来调用这些方法。

      如上所说,我们单纯通过反射机制也可以实现自省的效果,应该说自省本质也是通过java反射来实现的。只不过封装了一层,专职专用而已。

      下面是一个把某个对象的所有属性名称和值都打印出来的例子:

packagedemo;  
 
importjava.beans.BeanInfo;  
importjava.beans.Introspector;  
importjava.beans.PropertyDescriptor;  
 
publicclassIntrospectorDemo{  
Stringname;  
publicstaticvoidmain(String[]args)throwsException{  
IntrospectorDemodemo=newIntrospectorDemo();  
demo.setName("WinterLau");  
 
//如果不想把父类的属性也列出来的话,  
//那getBeanInfo的第二个参数填写父类的信息  
BeanInfobi=Introspector.getBeanInfo(demo.getClass(),Object.class);  
PropertyDescriptor[]props=bi.getPropertyDescriptors();  
for(inti=0;i<props.length;i++){  
System.out.println(props[i].getName()+"="+  
props[i].getReadMethod().invoke(demo,null));  
}  
 
}  
 
publicStringgetName(){  
returnname;  
}  
 
publicvoidsetName(Stringname){  
this.name=name;  
}  
}  

      我们常用的struts,spring中都是应用java反射和内省机制来实现的。Spring Ioc 容器中类的属性注入就是先通过内省机制先获得set方法,然后通过反射机制来注入属性的。

      Struts中的FormBean也是通过内省机制来将表单中的数据映射到类的属性上。

      Java中的反射和内省可以帮助我们提高我们系统的灵活性和可扩展性,我们常见的那些灵活的框架很多都是反射+内省+xml+xml解析来实现的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java内省机制及PropertyUtils使用方法

背景        一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值。但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像j...

[学习笔记]Java内省机制(JavaBean)

概述 1. 定义 内省(Introspector)是Java对Bean类属性、事件的一种缺省处理方法。给定一个javabean对象,我们就可以通过内省的方式得到/调用它的所有的ge...
  • jacobvv
  • jacobvv
  • 2014年12月30日 22:37
  • 449

javaBean类,以及Sun的java内省机制与apache的BeanUtils框架/工具简单应用

一、什么是符合规则的javaBean类? 具有:    .私有的字段(Field)   .对私有字段提供存取方法(读写方法)   .数量任意的业务方法 的类。 二、站在反射角度下的...

(转)关于java内省机制的一些描述与说明

1).内省(introspector)是 java 语言对 bean 类属性、事件的一种缺省处理方法。例如类 a 中有属性 name, 那我们可以通过 getname,setname 来得到其值或者...

Java 内省机制

Java 内省机制

【转】java内省和反射机制

JAVA的内省(introspector)与反射(reflection) 内省是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 g...
  • JAVA_96
  • JAVA_96
  • 2017年03月27日 16:14
  • 109

java内省机制

一、java反射机制     JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的...

Java内省机制小总结

Java内省机制小总结 Java中的反射机制是通过名称得到类的方法和对象的成份,对于一切Java类都是适用的,但是有时候使用起来比较麻烦。而JavaBean是一种特殊的Java类,遵守JavaBean...

java内省机制及PropertyUtils使用方法

背景        一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值。但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像ja...

Java内省机制

from URl : http://hi.baidu.com/suny_duan/blog/item/35e64489ac47af9fa5c2724c.html 1).内省(Introspector)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 内省机制
举报原因:
原因补充:

(最多只允许输入30个字)