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

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中的一个接口,请不要混淆!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者设计的。它包含了从基础到高级的完整知识体系,以及实际项目操作的全部流程。具体内容包括: 项目背景与目标:详细介绍了“系统管理”项目的起源、目的和核心功能。 技术栈概览:涵盖了SpringSpringMVC、MyBatis等主流JavaWeb框架的使用,以及MySQL数据库的管理。 项目模块解析:按照实际项目结构,分模块介绍了后台管理、用户权限管理、数据报表生成等功能的具体实现。 代码与实现细节:提供了完整的项目源代码,并针对关键部分进行了详细的注释和解析。 文档与笔记:整理了开发过程中的关键决策、技术难题以及学习心得,有助于深入理解项目背后的思考过程。 二、适用人群 这个项目资源包适用于即将毕业或已经毕业,希望通过实际项目经验增强自己JavaWeb开发能力的同学。无论你是初学者还是有一定经验的开发者,都可以从中获得宝贵的实践经验和技能提升。 三、使用建议 理论与实践相结合:在学习过程中,不仅要关注代码实现,更要理解背后的设计思想和原理。 模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者设计的。它包含了从基础到高级的完整知识体系,以及实际项目操作的全部流程。具体内容包括: 项目背景与目标:详细介绍了“系统管理”项目的起源、目的和核心功能。 技术栈概览:涵盖了SpringSpringMVC、MyBatis等主流JavaWeb框架的使用,以及MySQL数据库的管理。 项目模块解析:按照实际项目结构,分模块介绍了后台管理、用户权限管理、数据报表生成等功能的具体实现。 代码与实现细节:提供了完整的项目源代码,并针对关键部分进行了详细的注释和解析。 文档与笔记:整理了开发过程中的关键决策、技术难题以及学习心得,有助于深入理解项目背后的思考过程。 二、适用人群 这个项目资源包适用于即将毕业或已经毕业,希望通过实际项目经验增强自己JavaWeb开发能力的同学。无论你是初学者还是有一定经验的开发者,都可以从中获得宝贵的实践经验和技能提升。 三、使用建议 理论与实践相结合:在学习过程中,不仅要关注代码实现,更要理解背后的设计思想和原理。 模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实JavaWeb“系统管理”项目资源概览 一、内容概览 这个JavaWeb“系统管理”项目资源包,是专为对JavaWeb开发有兴趣的学习者设计的。它包含了从基础到高级的完整知识体系,以及实际项目操作的全部流程。具体内容包括: 项目背景与目标:详细介绍了“系统管理”项目的起源、目的和核心功能。 技术栈概览:涵盖了SpringSpringMVC、MyBatis等主流JavaWeb框架的使用,以及MySQL数据库的管理。 项目模块解析:按照实际项目结构,分模块介绍了后台管理、用户权限管理、数据报表生成等功能的具体实现。 代码与实现细节:提供了完整的项目源代码,并针对关键部分进行了详细的注释和解析。 文档与笔记:整理了开发过程中的关键决策、技术难题以及学习心得,有助于深入理解项目背后的思考过程。 二、适用人群 这个项目资源包适用于即将毕业或已经毕业,希望通过实际项目经验增强自己JavaWeb开发能力的同学。无论你是初学者还是有一定经验的开发者,都可以从中获得宝贵的实践经验和技能提升。 三、使用建议 理论与实践相结合:在学习过程中,不仅要关注代码实现,更要理解背后的设计思想和原理。 模块化学习:建议按照项目模块进行学习,从基础到高级,逐步深入。 持续实践与反思:通过实际操作项目,不断反思和总结,形成自己的技术见解和经验。 参与社区讨论:与同行交流心得,共同成长,拓宽视野。际操作项目,不断反思和总结,形成自己的技术见解和经验。 参与社区讨论:与同行交流心得,共同成长,拓宽视野。际操作项目,不断反思和总结,形成自己的技术见解和经验。 参与社区讨论:与同行交流心得,共同成长,拓宽视野。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值