Spring官方文档总结(持续更新)

本文深入解析Spring IoC容器的工作原理,包括Bean的定义、配置方式及实例化过程。探讨了BeanFactory与ApplicationContext接口的功能,以及XML、注解和Java配置的应用。通过实例演示了如何使用ApplicationContext创建和管理Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring IoC容器和bean的介绍

这是一个对象定义他们的依赖的过程,容器在创建bean时注入这些依赖。因为不再是自己new依赖,让spring控制,所以也叫做控制反转(IoC)。
BeanFactory接口提供了配置框架和基本功能。ApplicationContext是BeanFactory的子接口,它提供更多企业级应用的相关功能。

容器概述

org.springframework.context.ApplicationContext接口代表了Spring IoC容器,它通过读取配置来实例化,组装和配置上面所说的bean。配置的主要形式有XML,Java注解和Java代码,它允许你来定义应用中的对象和他们之间复杂的依赖关系。
下图为Spring如何工作的抽象视图。应用中的类被配置文件整合起来了,所以在ApplicationContext被创建和初始化后,你已经有一个完全配置和可执行的系统或应用了。
在这里插入图片描述

配置元数据

三种方式:
1、基于XML配置
2、基于注解配置
3、基于Java配置
详见Spring的Ioc配置元数据的三种方式

实例化一个容器对象

实例化一个Spring IoC容器非常简单。传递给ApplicationContext构造方法的相对路径或绝对路径,实际上是资源的路径,它允许容器从外部各种资源(例如本地文件系统,Java类路径等等)加载配置元数据。

ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

编写基于XML的配置文件

通过多个XML配置文件来定义bean是非常有必要的。通常,在你的架构中,每一个XML配置文件表示特定的逻辑层或模块。
你可以使用application context构造方法来从所有的XML来加载bean。这个构造方法可以接受多个资源,如上一节所示。还有一种选择,使用<import/>标签来加载其他的XML配置文件,如下面例子:

<beans>
    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>

使用容器

接口ApplicationContext是一个高级工厂的接口,它能够维护不同bean及其依赖项的注册表。使用方法getBean(String name, Class<T> requiredType)可以让你检索到bean的实例,如下所示:

// 创建ApplicationContext实例,加载bean配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

// 从上述配置文件中配置的bean中,检索你所需要的bean
PetStoreService service = context.getBean("petStore", PetStoreService.class);

// 使用配置好的实例,这就是具体的业务代码了
List<String> userList = service.getUsernameList();

实际上,你的代码里连getBean()都不需要调用,项目中一般使用@Autowire等注解,所以也就不需要依赖于Spring的API。

bean概述

一个Spring IoC容器管理一个或多个bean。这些bean是根据你提供给容器的配置来被容器创建的,例如在XML配置中,<bean/>标签下的配置。
除了包含创建bean的特定信息以外,ApplicationContext的实现类还允许用户通过调用getBeanFactory()方法在容器外创建现有对象。这个方法会返回BeanFactory的实现类DefaultListableBeanFactory。

实例化bean

作为代表性的,如果通过容器本身直接实例化bean,指定要构建的bean的类,通过反射调用类的构造方法,这等同于Java的new操作。
如果你是基于XML来配置bean的,你可以在<bean/>的class属性中指定对象的类型。有两种使用Class属性的方式:
1、通过容器本身直接实例化bean,指定要构建的bean的类,通过反射调用类的构造方法,这等同于Java的new操作。
2、较少的情况,指定的实际类,含有一个静态的工厂方法,调用这个工厂方法后可以实例化bean。从调用静态工厂方法返回的对象类型可以是相同的类或其他类。
在Spring文档中,工厂bean指的是在Spring容器中配置好的bean,它将通过一个实例工厂或静态工厂来创建对象。与之相比,FactoryBean(注意这个是一个类名)是指Spring中的一个接口,请不要混淆!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值