本文为 【Spring】Spring IOC容器 相关知识,首先为大家介绍Spring IOC相关的名词概念,对Spring IOC进行概述,然后具体为大家介绍配置元数据
,容器实例化与使用
等Spring IOC相关详尽内容~
📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)
在学习IOC 容器之前首先需要了解一些常见的名词:
POJO | JAVABean |
---|---|
除了Java语言强加的限制外,它没有其他特殊限制。 | 这是一个特殊的POJO,它有一些限制。 |
它没有对成员提供太多控制。 | 它提供对成员的完全控制。 |
它可以实现Serializable接口。 | 它应该实现可序列化的接口。 |
可以通过字段名称访问字段。 | 字段只能由getter和setter访问。 |
字段可以具有任何可见性。 | 字段只有私人可见性。 |
可能/可能没有no-arg构造函数。 | 它必须具有无参数构造函数。 |
当您不想限制成员并让用户完全访问您的实体时使用它。 | 当您要向用户提供您的实体,但仅向实体的一部分提供服务时,将使用它。 |
POJO类和Bean均用于定义Java对象,以提高其可读性和可重用性。POJO没有其他限制,而bean是具有某些限制的特殊POJO。
🍀编写spring代码,我们需要创建一个maven工程,并加入以下依赖:
org.springframework spring-core 5.2.18.RELEASE
org.springframework spring-beans 5.2.18.RELEASE
org.springframework spring-context 5.2.18.RELEASE
🍀本章将介绍Spring框架实现控制反转(IoC)的原理, IoC也称为依赖注入(DI)
org.springframework.beans
和org.springframework.context
包是Spring框架的IoC容器的基础。
BeanFactory接口提供了一种高级的配置机制,能够管理任何类型的对象。
ApplicationContext是BeanFactory的子接口。 它对BeanFactory进行了补充:
🍀beanFactory和ApplicationContext接口展示如下:
public interface BeanFactory {}
public interface ApplicationContext
extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver {}
简而言之,BeanFactory提供了容器的基本功能,而ApplicationContext添加了更多特定于企业的功能。 ApplicationContext是BeanFactory的一个完整超集,仅在本章描述Spring的IoC容器时使用。
在Spring中,由Spring IoC容器【管理】的构成【应用程序主干的对象】称为【bean】。 bean是由Spring IoC容器实例化、组装和管理的对象。 否则,bean只是应用程序中的众多对象之一。 bean及其之间的依赖关系反映在容器使用的【配置元数据】中。
【applicationcontext】接口表示Spring IoC容器,并负责实例化、配置和组装bean。 容器通过读取配置元数据获得关于要实例化、配置和组装哪些对象的指令。 配置元数据以XML、Java注解或Java代码表示。 它允许您表达组成应用程序的对象以及这些对象之间丰富的相互依赖关系。
Spring提供了ApplicationContext接口的几个实现。
在独立应用程序中,创建ClassPathXmlApplicationContext或FileSystemXmlApplicationContext的实例是很常见的。 虽然XML一直是定义配置元数据的传统格式,但您可以通过提供少量的XML配置以声明方式支持这些额外的元数据格式,指示容器使用Java注解或代码作为元数据格式。
构建【Spring IoC容器】可以通过构建配置元数据的方式。 这个【配置元数据】说的是:作为应用程序开发人员,您要告诉Spring容器如何去【实例化、配置和组装】应用程序中的对象。 【元数据】传统上以简单而直观的XML格式提供,本章的大部分内容都使用这种格式来传达Spring IoC容器的关键概念和特性。
下面的示例展示了基于xml的配置元数据的基本结构:
🍀实例化一个容器
ApplicationContext 的构造函数可以是【xml文件的位置路径】的字符串,他允许容器从各种外部资源(如本地文件系统、Java的 'CLASSPATH ’ 等)加载配置元数据。
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
下面的示例显示了服务层对象(services.xml)的配置文件:
下面的例子展示了数据访问对象(dao.xml )配置文件:
🍀容器的使用
【ApplicationContext】是一个高级工厂的接口,它维护了一个bean的注册列表,保存了容器产生的所有bean对象。 通过使用方法T getBean(String name, Class
,您可以检索bean的实例。
【ApplicationContext】允许你读取和访问bean,如下面的示例所示:
// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");// retrieve configured instance,这里使用bean的标识符活class对象检索bean的事例。
PetStoreService service = context.getBean("petStore", PetStoreService.class);// use configured instance
List userList = service.getUsernameList();
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~