从Quick Start的例子中可以看到,所谓依赖注入,即在运行期由容器将依赖关系注入到组件之中。
讲的通俗点,就是在运行期,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法进
行设定。
我们知道,如果动态设置一个对象属性,可以借助Java的Reflection机制完成:
Class cls = Class.forName("net.xiaxin.beans.User");
Method mtd = cls.getMethod("setName",new Class[]{String.class});
Object obj = (Object)cls.newInstance();
mtd.invoke(obj,new Object[]{"Erica"});
return obj;
上面我们通过动态加载了User类,并通过Reflection调用了User .setName方法设置其name属性。
对于这里的例子而言,出于简洁,我们将类名和方法名都以常量的方式硬编码。假设这些常量都是通过配
置文件读入,那我们就实现了一个最简单的BeanWrapper。这个BeanWrapper的功能很简单,提供一个
设置JavaBean属性的通用方法(Apache BeanUtils 类库中提供了大量针对Bean的辅助工具,如果有兴
趣可以下载一份源码加以研读) 。
Spring BeanWrapper基于同样的原理,提供了一个更加完善的实现。
看看如何通过Spring BeanWrapper操作一个JavaBean:
Object obj = Class.forName("net.xiaxin.beans.User").newInstance();
BeanWrapper bw = new BeanWrapperImpl(obj);
bw.setPropertyValue("name", "Erica");
System.out.println("User name=>"+bw.getPropertyValue("name"));
对比之前的代码,相信大家已经知道BeanWrapper的实现原理。
诚然,通过这样的方式设定Java Bean属性实在繁琐,但它却提供了一个通用的属性设定机制,而这
样的机制,也正是Spring依赖注入机制所依赖的基础。
通过BeanWrapper,我们可以无需在编码时就指定JavaBean的实现类和属性值,通过在配置文件
加以设定,就可以在运行期动态创建对象并设定其属性(依赖关系) 。
上面的代码中,我们仅仅指定了需要设置的属性名“name”,运行期,BeanWrapper将根据Java
Bean规范,动态调用对象的“setName”方法进行属性设定。属性名可包含层次,如对于属性名
“address.zipcode”,BeanWrapper会调用“getAddress().setZipcode”方法。
分享到:
相关推荐
Spring框架通过Bean Wrapper、Bean Factory和ApplicationContext等机制对Bean进行管理和封装。 - **Bean Wrapper**:提供了一种通用的方式来访问和操作Bean属性。 - **Bean Factory**:是最基本的容器,负责创建和...
- **Bean Wrapper**:Bean Wrapper提供了一种封装Bean的方法,它支持读取和设置Bean的属性。 - **Bean Factory**:Bean Factory是Spring框架中最基本的容器,它负责创建Bean实例、配置Bean属性以及管理Bean的生命...
- **Bean Wrapper**:Spring提供了Bean Wrapper接口,用于包装对象,从而能够管理对象的状态和生命周期。 - **Bean Factory**:这是Spring中最基本的IoC容器,负责实例化、定位和配置应用程序中的对象,即Bean。 - *...
Bean Wrapper提供了一种通过包装器模式来操作Bean属性的方式,而Bean Factory则是Spring容器,负责管理Bean的生命周期,包括创建、配置、管理以及销毁Bean。 ApplicationContext是Bean Factory的扩展,它除了具备...
Spring通过Bean Wrapper和Bean Factory等机制实现了对Bean的封装和管理: - **Bean Wrapper**:提供了对Bean属性的访问和操作接口,支持属性的读取、设置和监听。 - **Bean Factory**:是最基本的Bean容器,负责...
Spring框架通过Bean Wrapper和Bean Factory等机制来管理和封装Bean。 - **Bean Wrapper**:提供了对Bean属性的访问和操作。它可以用来获取或设置Bean的属性值。 - **Bean Factory**:是Spring中最基本的IoC容器,...
Spring框架通过Bean Wrapper和Bean Factory两种机制实现对象的封装和管理。Bean Wrapper提供了对Bean属性的操作,而Bean Factory则是创建和管理Bean的工厂,负责Bean的实例化、依赖注入和生命周期管理。更进一步地,...
- **Bean Wrapper**:提供了一种访问和操作Bean属性的方法,支持读写操作,是Spring Bean管理的重要组成部分。 - **Bean Factory**:是Spring容器的基础,负责创建和管理Bean的生命周期,是最原始的容器接口。 - **...
- **Bean manipulation and the Bean Wrapper**:讲解了Bean操作及Bean Wrapper的使用。 - **Spring Type Conversion**:介绍了Spring中的类型转换机制。 - **Spring Field Formatting**:讲述了Spring如何进行字段...
- **Bean封装机制**:Spring框架通过Bean Wrapper、Bean Factory和ApplicationContext等概念来管理Bean的生命周期。 - **Bean Wrapper**:提供了一种包装Bean的方法,使得开发者可以通过统一的接口访问和修改Bean...
文档介绍了Bean Wrapper和Bean Factory两种Bean封装机制,前者提供了对Bean属性操作的封装,后者负责Bean实例的创建和管理,是Spring IoC容器的基础。ApplicationContext则是Bean Factory的高级实现,提供了更丰富的...
1. **Bean Wrapper**:提供了访问和操作Bean属性的标准接口,使开发者能够以统一的方式访问和修改Bean的属性。 2. **Bean Factory**:是最基本的容器,负责创建和管理Bean的实例,以及Bean的配置和生命周期管理。 3....
- **Bean Wrapper**:提供了操作Bean的方法,可以用来获取和设置Bean的属性。 - **Bean Factory**:是最基本的容器,负责实例化、定位和配置对象,是所有容器的基类。 - **ApplicationContext**:扩展了Bean Factory...
- **Bean Wrapper**:Bean Wrapper是一个工具类,它可以包装一个Java Bean,并提供对属性的操作,如读取和设置。 - **Bean Factory**:Bean Factory是Spring容器的基础,负责实例化、定位和配置应用程序中的对象。 -...
- **Bean Wrapper**:Spring提供的一个类,用于包装其他对象,提供统一的操作接口。 - **Bean Factory**:Spring容器的基础,负责实例化、定位和配置应用程序中的对象,即Bean。 - **ApplicationContext**:扩展...