第二章、Spring IoC(BeanFactory、ApplicationContext(BeanFactory子接口)、Spring依赖注入)

一、Spring IoC的基本概念

一、概念及作用

作用

解耦合

概念

IoC:Inversion of Control即控制反转
把创建对象交给Spring来做

在传统编程模式下,调用者通常会采用 “new 被调用者”的代码方式来创建对象。这种方式会增加调用者与被调用者之间的耦合性,不利于后期代码的升级与维护 。

当Spring框架出现后, 对象的实例不再由调用者来创建,而是由Spring容器来创建。 Spring 容器会负责控制程序之间的关系 (例如面包店负责控制您与面包的关系),而不是由调用者的程序代码直接控制。这样, 控制权由调用者转移到Spring容器, 控制权发生了反转,这就是 Spring 的控制反转。

从Spring容器角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,相当于为调用者注入它所依赖的实例,这就是Spring的依赖注入。

综上所述,控制反转是一种通过描述 (在Spring中可以是XML或注解)并通过第三方去产生或获取特定对象的方式。在Spring中实现控制反转的是IoC容器, 其实现方法是依赖注入。

二、Spring IoC容器

IoC容器的设计主要是基于BeanFactory和ApplicationContext两个接口

BeanFactory

1、功能

是一个管理Bean的工厂, 主要负责初始化各种Bean

2、详解

BeanFactory由org.springfamework.beans.factory.BeanFactory 接口定义,它提供了完整的IoC服务支持,是一个管理Bean的工厂, 主要负责初始化各种Bean。BeanFactory接口有多个实现类,其中比较常用的是 org.springframework.beans.factory.xml.XmlBeanFactory, 该类会根据XML配置文件中的定义来装配 Bean(有关Bean的知识将在本书第3章讲解)。

3、注意

这种方式在创建 BeanFactory 实例时需要提供 XML 文件的绝对路径。
在这里插入图片描述

ApplicationContext

ApplicationContext是BeanFactory的子接口,也称为应用上下文,由org.springframework.context.ApplicationContext接口定义。 ApplicationContext接口除了包含BeanFactory的所有功能以外,还添加了对国际化、资源访问、 事件传播等内容的支持。

创建ApplicationContext接口实例通常有以下三种方法

1、通过ClassPathXmlApplicationContext创建

ClassPathXmlApplicationContext将从类路径目录(src根目录〉中寻找指定的XML配置文件
在这里插入图片描述

2、通过 FileSystemXmlApplicationContext创建

FileSystemXmlApplicationContext将从指定文件的绝对路径中寻找XML配置文件,找到井装载完成 ApplicationContext的实例化工作。
在这里插入图片描述

采用绝对路径的加载方式将导致程序的灵活性较差,一般不推荐使用,因此,通常在Spring的Java应用中采取通过 ClassPathXmlApplicationContext类来实例化 ApplicationContext容器的方式,而在Web应用中, ApplicationContext容器的实例化工作将交给Web服务器完成。

3、通过Web服务器实例化ApplicationContext容器

在 Web 服务器实例化 ApplicationContext 容器时, 一般使用基于 org.springframework. web.context.ContextLoaderListener 的实现方式(需要将 spring-web-5.0.2.RELEASE.jar 复制 到 WEB-INF/lib目录中),此方法只需在 web.xml 中添加如下代码
在这里插入图片描述

三、Spring依赖注入

1、作用

在Spring中实现IoC容器的方法是依赖注入,依赖注入的作用是在使用Spring框架创建对象时动态地将其所依赖 的对象(例如属性值〉注入Bean组件中。 Spring 框架的依赖注入通常有两种实现方式,一种是使用构造方法注入,另一种是使用属性的 se忧er 方法注入。

2、使用构造方法注入

Spring 框架可以采用 Java 的反射机制,通过构造方法完成依赖注入。

构造方法注入下配置文件的编写

在这里插入图片描述
在配置文件中,constructor-arg元素用于定义类构造方法的参数,index用于定义参数的位置,ref指定某个实例的引用。如果参数是常数值,ref由value代替

3、使用属性的setter方法注入

使用setter方法注入是Spring框架中最主流的注入方式,它利用JavaBean规范所定义的setter方法来完成注入,灵活且可读性高。对于setter方法注入,Spring框架也是使用Java的反射机制实现的
在这里插入图片描述

发布了105 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38367817/article/details/105608009