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内省机制

Wiki上的解释: 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。 不应该将内省和反射混淆。相对于内省,反射更...
  • u010445297
  • u010445297
  • 2017年03月09日 20:28
  • 710

Java读书笔记十一(Java中的内省机制)

1.前言 最近在学习Java的时候,突然发现了这个概念,鉴于好奇心的压迫,于是打算写一篇博客来总结一下。  2.什么是内省机制 为了让程序员们更好的从左Java对象的属性,SUN公司开发了一...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年08月04日 11:53
  • 1512

《JavaBean》-----Java的内省机制

在之前做过的项目中,都涉及到了前后台的交互,当我们将前台页面上获得的参数传递到后台的时候,我们可以利用很多方法,譬如用Ajax的表单提交,或者直接用JQuery封装的Ajax传递。当我们传递到后台的时...
  • u013067402
  • u013067402
  • 2016年08月05日 20:26
  • 1317

内省 + 反射(简单应用实现原理)

当我们需要封装从页面传递到后台的请求参数时,简单的方式就是使用一个工具类帮我们封装,省很多力气,还不容易出错。那接下来就简单介绍下这个BeanUtils工具类的实现原理,顺便重温下java内省机制。 ...
  • java__project
  • java__project
  • 2016年12月24日 22:55
  • 502

Java内省详解

内省的解释内省在wiki上的解释: 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。...
  • u014394715
  • u014394715
  • 2016年04月22日 10:19
  • 4906

Java 基础加强 - JavaBean与内省操作

Java基础加强JavaBean与内省操作 一.JavaBean 1.     什么叫做JavaBean? JavaBean是一种特殊的Java类,主要用于传递数据信息,这种Java类中的方法主要用于...
  • hua631150873
  • hua631150873
  • 2013年09月18日 22:19
  • 1511

java反射和内省

java中一个强大的功能,莫过于反射了。通常我们看看的Struct2、Struct1、Spring、Hibernate等等集合无一不使用了反射机制。那么什么是反射呢,到底有什么用呢? 一、反射机...
  • wodeyuer125
  • wodeyuer125
  • 2014年10月21日 21:46
  • 1266

内省机制和BeanUtils

1 开发框架时候,经常要对类属性进行赋值和取值,用反射完成过于繁琐,所以出现了内省API专门用来操作Bean类的属性,因为操作属性主要通过get和set方法,所以操作的是JavaBean类。 pub...
  • xixiaoming_A
  • xixiaoming_A
  • 2013年09月17日 16:02
  • 574

Java内省初探——字段与属性

今天第一次解除Java内省机制,虽然没有什么即为深入的了解,但经过初步的学习后我将Java内省机制初步理解为对于Java代码的一种规范化管理机制。 下面一个具体代码作为实例进行解释: //java...
  • u010651383
  • u010651383
  • 2013年07月31日 21:47
  • 829

javaBean的内省操作

反射技术实际是已经能够完全满足我们对javaBean的各种操作了,但是为了方便JDK还是为我们提供了一套操纵JavaBean的API,我们称这套API为内省操作(Introspector),下面示范一...
  • memray
  • memray
  • 2013年08月16日 16:58
  • 1446
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 内省机制
举报原因:
原因补充:

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