Spring学习5(2)BeanFactory和ApplicationCotext

本文详细介绍了Spring框架中的BeanFactory和ApplicationContext。BeanFactory作为IoC容器的基础,提供类的通用工厂功能,而ApplicationContext则在此基础上增加了更多面向应用的功能。文中探讨了BeanFactory的类体系结构和初始化过程,以及ApplicationContext的类结构、基本初始化方法,包括类注解配置和基于Groovy DSL的配置。同时,文章还讲解了WebApplicationContext在Web应用中的使用和初始化方式。
摘要由CSDN通过智能技术生成

Spring学习5(2)

基本介绍

 Spring通过配置文件来描述Bean和Bean之间的依赖关系,利用java来对Bean实例化并建立Bean之间的依赖关系。
 BeanFactory是spring框架最核心的接口,它提供了高级IoC的配置机制,它使管理不同类型的java对象成为可能。
 ApplicationContext建立在BeanFactory基础之上,提供了更多面向应用的功能,更易于创建实际应用。
 一般称BeanFactory为IoC容器,而ApplicationContext为应用上下文,但有时也叫ApplicationContext为spring容器。
 对于二者的区别是BeanFactory是spring框架的基础,面向spring本身;ApplicationContext面向spring框架的开发者,基本开发场景都使用ApplicationContext。

BeanFactory

 beanfactory是一个类工厂,但和传统的类工厂不同,它是类的通用工厂,所有可以被spring容器实例化并管理的java类都可以成为spring的bean。

BeanFactory的类体系结构

 BeanFactory是不断的继承发展而来从而形成了一个类的结构树,BeanFactory这个接口就位于类结构树的顶端,其主要方法就是getBean(String beanName)来获得特定名称的Bean。它的功能通过其他接口而不断的扩展。
 下面这张图是书中给出的结构图:
在这里插入图片描述

 这其中有如下的接口:

  1. ListableBeanFactory:定义了访问容器中Bean基本信息的若干方法,如查看Bean的个数,容器中是否包含这某一个特定的Bean等。
  2. HierarchicalBeanFactory:父子级联IoC容器的接口,子容器可以通过接口访问父容器。
  3. ConfigurableBeanFactory:增强了IoC容器的可定制性,定义了设置类装载器,属性编辑琦等方法。
  4. AutoWirecapableBeanFactory:定义了将容器中的Bean按某种规则进行自动装配的方法。
  5. SingletonBeanRegistry:定义了允许在运行期间向容器注册单实例Bean的方法。
  6. BeanDefinitionRegistry:Spring配置文件中的每一个<bean>节点元素在spring容器中都通过一个BeanDefinition对象表示,它描述了Bean的配置对象信息。而这个接口提供了向容器手工注册BeanDefinition对象的方法。

初始化BeanFactory

 使用spring配置文件来提供配置信息,然后通过BeanFactory装配配置文件,最后启动springIoC容器。
 这里我们通过上一节Car的例子来说明。首先将Car放到com.smart包下,在resourcecs/com/smart/beanfactory下创建beans.xml文件进心配置,其中代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
	<bean id="car1" class="com.smart.Car"
	p:brand="红旗CA72"
	p:color="黑色"
	p:maxSpeed="200"
	/>
	</beans>

 接下来就是利用BeanFactory来实现容器的启动,这里注意的是不要用XmlBeanFactory了,这个接口已经被弃用了,我们使用XmlBeanDefinitionReader,DefaultListableBeanFactory实现类启动spring的IoC容器。代码如下:

package com.smart.beanfactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import com.smart.Car;
import org.testng.annotations.*;
import static org.testng.Assert.*;
public class BeanFactoryTest{
   
	
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值