package introSpector;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.junit.Test;
/**
* java自带的api可以直接对java bean对象进行get/set操作
* @author lxf
*
*/
public class Learn {
@Test
public void test_1() throws Exception{
ReflectPoint rp = new ReflectPoint();
String property = "x";
String property2 = "detail";
writeProperty(rp,property,123);
System.out.println(this.getProperty(rp, property));
writeProperty(rp,property2,"detail content");
System.out.println(this.getProperty(rp, property2));
}
/**
* param object 对象
* param property 属性名
*/
private Object getProperty(Object object, String property) throws IntrospectionException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(property,object.getClass());
Method readMethod = pd.getReadMethod();
Object r = readMethod.invoke(object);
return r;
}
/**
* param object 对象
* param property 属性名
* param propertyValue 属性值
*/
private void writeProperty(Object object, String property,Object propertyValue)
throws IntrospectionException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(property,object.getClass());
Method writeMethod = pd.getWriteMethod();
writeMethod.invoke(object, propertyValue);
}
}
相关推荐
Java Bean的五种重要机制包括内省(Introspection),使得组件可以公开其支持的操作和属性;通信(Communication),处理组件间的消息传递;持久化(Persistence),保存组件的状态;属性(Properties),控制组件的...
Java反射与内省是Java编程语言中的核心特性,它们为开发者提供了强大的能力,可以在运行时检查和操作类、接口、对象及其属性。本PPT深入探讨了这些概念,旨在帮助开发者充分利用Java平台的灵活性。 首先,Java反射...
内省是Java为Bean类提供的对属性和事件的默认处理机制。Bean类通常遵循一定的命名规范,如属性名为 `name`,则对应的getter和setter方法分别为 `getName()` 和 `setName()`。Java提供了一系列API来帮助开发者方便地...
内省机制和反射机制是两种不同的机制,内省机制主要用于访问某个 Bean 的属性和事件,而反射机制则可以用于访问和操作任何对象的属性和方法。它们经常被结合使用,以便更好地实现实际应用中的需求。
一个Java Bean是一个实现了特定功能的Java类,其内部细节对外部是封装的,用户仅能通过预定义的接口来操作。这提高了代码的重用性和模块化。 17.2 Java Bean 编写规范 编写Java Bean时,需遵循一定的命名和设计规则...
本篇文章将深入探讨如何利用反射和内省技术来实现一个简单的Spring IOC。首先,我们来理解什么是反射和内省。 反射是Java提供的一种强大的动态类型机制,它允许程序在运行时检查类的信息,如类名、属性、方法等,并...
5. **性能优化**:XMLBean利用了Java的反射机制和内省(Introspection)来提高处理速度。虽然反射有时被认为会影响性能,但在XMLBean中,这种开销被精心设计的缓存机制所抵消,使其在大多数情况下能够提供良好的性能...
在JSP(JavaServer Pages)中,Java Bean尤其常见,因为它们可以通过内嵌的Java代码轻松访问和操作。 17.1 Java Bean 技术概述 Java Bean 是基于Java的组件模型,它允许开发者创建可独立管理的、封装良好且易于重用...
总的来说,Java内省提供了一种强大的工具,让我们能够在运行时动态地探索和操作Java对象,特别是对于符合JavaBean规范的对象。这使得我们可以编写更加灵活、可复用的代码,而不需要对每个对象的内部结构有深入的了解...
在实际开发中,JavaBean经常被用在JSP中,作为页面的数据模型,通过EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签来访问和操作Bean的属性,从而实现动态网页的生成。此外,...
Apache Commons BeanUtils库进一步简化了内省操作。在示例中,虽然没有直接使用,但`BeanUtils`类提供了便捷的API来复制属性、设置值等。例如,`BeanUtils.copyProperties(Object dest, Object src)` 可以将源对象的...
在 J2EE 应用中,内省机制常用于框架自动识别 JavaBean 的属性,并根据这些属性进行相应的操作,例如:在容器中自动注入依赖。 ### 总结 JavaBean 作为一种标准的组件模型,在 Java 开发中起着重要作用。它不仅有...
3. **内省(Introspection)**:内省是Java提供的一组API,用于在运行时检查类的属性和方法。它可以查看类的信息,如字段、方法和构造函数,并进行调用,是反射的一个子集,但更专注于Bean属性的操作。 4. **注解...
Java的java.beans包提供了内省支持,可以用来动态地获取和设置Bean的属性,调用其方法。在JavaWeb开发中,内省可以帮助我们实现更灵活的组件交互,尤其是在处理用户界面和业务逻辑之间的数据交换时。 该后台系统...
Beans 是一种强大且简单的组件方式,它可以将 Java 编程中的逻辑放在 Bean 的方法中,使开发人员可以更方便地操作和开发。 Beans 的方法调用可以处理几乎所有通过 Java 编程可以完成的工作,这使得 JSP 的开发更加...
通过BeanWrapper,开发者可以方便地操作Bean,无论是简单的属性赋值,还是复杂的嵌套属性处理,甚至是方法调用,都能得以实现。 例如,在给定的代码示例中,我们创建了一个`Company`和一个`Employee`对象,然后使用...
Spring框架的@Autowired注解可以自动将依赖注入到bean中,但这里我们讨论的是基于Servlet和纯Java的BeanUtils自动装配,它们在原理上是相似的,都是利用反射和内省来实现对象的初始化和属性赋值。 总结起来,`...
Apache Commons BeanUtils是Java开发中的一个强大工具,它通过提供简单易用的API,使得操作Bean的属性变得更加便捷,尤其在处理数据绑定和大量Bean操作的场景下,极大地提高了开发效率。这个1.9.2版本的库包含了所有...
- **事件适配器(Event Adapters)**:提供了一个简单的基础类,可以从中选择性地覆盖感兴趣的方法来处理事件。 - **事件过滤(Event Filtering)**:允许根据特定条件过滤传入的事件。 - **事件队列(Event ...
标准MBean适用于定义明确、稳定的资源,它们基于Java Bean模式,通过内省机制获取属性和方法信息。动态MBean则提供了更大的灵活性,包括Open MBean和Model MBean,用于管理动态或复杂的数据结构。 **总结** JMX技术...