内省机制(操作javaBean的信息)】的更多相关文章

内省机制(操作javaBean的信息) ----是不是联想到了反射机制了哈,这两者有什么区别呢? 1.内省机制和反射机制的联系 ■ 其实内省机制也是通过反射来实现的,而反射是对一切类都适合去动态获取类的信息,而内省机制是sun公司针对特殊的类---javaBean推出的技术.内省机制就是用来获取javabean的信息的. 2.什么是javaBean? ■ 比较官方的描述:javaBean 是一种java 语言写成的可重用的组件(类). ■ 简单理解:就是一种特殊类,遵循特定的规范,遵循的规范如下…
内省,英文中称作introspector.主要对javaBean进行操作,JavaBean是一个特殊的Java类,该类中方法名符合特定的规则(其实就是getXXX,setXXX),我们一般是利用get,set方法来推断属性的名称,而不是直接根据属性来获得名称,因为属性都是私有的,而get,set方法都是共有的.推断规则:如果第二个字母为小写,则首字母小写,例如: getAge->age setage->age 由于自己根据方法名来推断属性名称非常麻烦,因此我们可以通过内省的方式来调用set,g…
一.步骤: 1)使用PropertyDescriptor类获取属性描述者对象 //pd引用Student的name属性 PropertyDescriptor pd = new PropertyDescriptor("name", Student.class); 2)通过getWriteMethod()方法+invoke()方法进行设置 //相当于得到setName() Method m = pd.getWriteMethod(); m.invoke(stu, "berrry&…
获取类bean中的所有属性: @Test //获取类bean中的所有属性 public void test1() throws Exception{ BeanInfo info = Introspector.getBeanInfo(Person.class); PropertyDescriptor[] decriptors = info.getPropertyDescriptors(); for(PropertyDescriptor decriptor : decriptors){ //输出属性…
简单模拟spring IoC容器的操作[管理对象的创建.管理对象的依赖关系,例如属性设置] 实体类Hello package com.shan.hello; public class Hello { private String password; private String username; private Hello() {}; public Hello(String username) { this.username = username; } public void setPassw…
学习内容: (1)获取构造函数 这里不贴Person类了,不然代码太多太乱了,只给出一些常用API // 创建字节码对象 Class<?> aClass = Class.forName("com.yy.Person"); // 1.获取公共无参的构造方法 Constructor<?> constructor = aClass.getConstructor(); // 2.获取公共有参的构造方法 Constructor<?> constructor2…
import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.junit.Test; //使用内省api操作bean的属性 public class Demo { /** * * @throws…
Spring 属性注入(一)JavaBean 内省机制在 BeanWrapper 中的应用 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) Spring 中的属性注入也是基于 JDK 的 JavaBean 的内省,详见<JDK 之 JavaBean 内省机制>:https://www.cnblogs.com/binarylei/p/10204208.html 一.BeanWrapper 的使用 @Test publi…
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * 使用内省的方式操作JavaBean */ public class IntroSpectorTest { public static void main(Stri…
背景 一般情况下,在Java中你可以通过get方法轻松获取beans中的属性值.但是,当你事先不知道beans的类型或者将要访问或修改的属性名时,该怎么办?Java语言中提供了一些像java.beans.Introspector这 样类,实现了在运行时检测Java类并确定属性get和set方法的名称,结合Java中的反射机制就可以调用这些方法了.然而,这些APIs使用起来比 较困难,并且将Java类中一些不必要的底层结构暴露给了开发人员.BeanUtils包中的APIs试图简化动态获取和设置be…