本文参考了
http://www.springsource.org/documentationspring 2.5中文参考手册
一、IoC 容器
1.org.springframework.beans.factory.BeanFactory 是Spring IoC容器的实际代表者,IoC容器负责容纳此前所描述的bean,并对bean进行管理。
2.在Spring中,BeanFactory是IoC容器的核心接口。 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
3.Spring为我们提供了许多易用的BeanFactory实现, XmlBeanFactory就是最常用的一个。该实现将以XML方式描述组成应用的对象 以及对象间的依赖关系。XmlBeanFactory类将获取此XML配 置元数据,并用它来构建一个完全可配置的系统或应用。
4.BeanFactory 容器提供配制框架及基本功能,。ApplicationContext 容器 是 BeanFactory 的扩展,集成了 Spring AOP、资源处理(国际化处理)、事件传递及各种不同应用层的context实现 (如针对web应用的WebApplicationContext)。
二、Bean
在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。
三、用 XML 定义Bean
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
6
7 <bean id="BeanID" class="ClassPath">
8 </bean>
9
10 <bean id="" class="">
11 </bean>
12
13
14
15 </beans>
16 bean定义与应用程序中实际使用的对象一一对应。通常情况下bean的定义包括:服务 层对象、数据
访问层对象(DAO)、类似Struts Action的 表示层对象、Hibernate SessionFactory对象、JMS Queue对象>等等。通常bean的定义并不与容器中的领域 对象相同,因为领域对象的创建和加载必须依赖具体的DAO和业>务逻辑。
四、实例化容器
1.实例化 BeanFactory 容器
1 Resource resource = new ClassPathResource("alex/study/spring/spring.xml")
2 BeanFactory factory = new XmlBeanFactory(resource);
2.实例化 ApplicationContext 容器
1 ApplicationContext factory = new ClassPathXmlApplicationContext("alex/study/spring/spring.xml");
五、多个 xml 配置文件
1.指定一个数组
1 ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});
2.在 xml 配置文件 Beans 块首部引入其它配置文件
1 <beans>
2
3 <import resource="services.xml"/>
4 <import resource="resources/messageSource.xml"/>
5 <import resource="/resources/themeSource.xml"/>
6
7 <bean id="bean1" class=""/>
8 <bean id="bean2" class=""/>
9
10 </beans> 六、Bean 别名
1.每个bean都有一个id,这些id在当前IoC容器中必须唯一。指定别名可以在name属性中使用逗号、>空格将多个字符串(别名)分隔。
1 <bean id="hello" name="world,hello2 hello3" class="alex.study.spring.beanlifecycle.HelloService"/>
2.或使用alias元素配置
1 <alias name="hello" alias="helloalias"/>
七、实例化 Bean
1.默认的 Bean 通过类的默认(无参)构造器创建实例。
2.使用静态工厂方法实例化,createInstance()必须是一个static方法。
1 <bean id="exampleBean" class="examples.ExampleBean2" factory-method="createInstance"/>
3.使用实例工厂方法实例化.与 使用静态工厂方法实例化类似,用来进行实例化的非静态实例工厂>方法位 于另外一个bean中,容器将调用该bean的工厂方法来创建一个新的bean实例。为使 用此机制,class属性必须为空,而factory-bean 属性必须指定为当前(或其祖先)容器中包含工厂方法的bean的名称,而该 >工厂bean的工厂方法本身必须通过factory-method属性来设定。
1 <bean id="serviceLocator" class="com.foo.DefaultServiceLocator"></bean>
2 <bean id="exampleBean" factory-bean="serviceLocator" factory-method="createInstance"/>