Java EE框架整合开发入门到实战——SSM(微课版)【02 Spring IoC】

hello~ 本系列文章是我考前自用整理复习,欢迎评论区讨论!大家一起学习!

系列文章目录

  00 导入
  01 Spring入门
  02 Spring Ioc(本文)


一、Spring IoC的基本概念

  控制反转(Inversion of Control,IoC),是Spring框架的核心,用来消减计算机程序的耦合问题。依赖注入(Dependency Injection,DI)是IoC的另外一种说法,只是从不同的角度,描述相同的概念。
  从Spring容器角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,相当于为调用者注入它所依赖的实例,这就是Spring的依赖注入。
  控制反转是一种通过描述(在Spring中可以是XML或注解)并通过第三方去产生或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入

二、Spring IoC容器

  Spring IoC容器的设计主要是基于BeanFactoryApplicationContext两个接口。

1.BeanFactory

  BeanFactory提供了完整的IoC服务支持,是一个管理Bean的工厂,主要负责初始化各种Bean
  BeanFactory 接口有多个实现类,最常见的是org.springframework.beans.factory.xml.XmlBeanFactory,它是根据 XML 配置文件中的定义装配 Bean 的。
  创建BeanFactory实例时,需要提供XML文件的绝对路径。

public static void main(String[] args){
	//初始化String容器,加载配置文件
	BeanFactory beanFac=new XmlBeanFactory(new FileSystemResource("D:\eclipse-workspace\ch1\src\application.xml"));
	//通过容器获取test实例
	TestDao tt=(TestDao)beanFac.getBean("test");
	tt.sayHello();
}//了解即可,不常用

2.ApplicationContext

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

  • 创建ApplicationContext实例,通常有三种方法:
    • 通过ClassPathXmlApplicationContext创建
    • 通过FileSystemXmlApplicationContext创建
    • 通过Web服务器实例化ApplicationContext容器创建

ClassPathXmlApplicationContext与FileSystemXmlApplicationContext区别:
  在读取 Spring 的配置文件时,FileSystemXmlApplicationContext不再从类路径中读取配置文件,而是通过参数指定配置文件的位置,它可以获取类路径之外的资源,如“F:/workspaces/applicationContext.xml”。

BeanFactory和ApplicationContext的异同点:
  同:BeanFactory 和 ApplicationContext 都是通过 XML 配置文件加载 Bean的。
  异:如果 Bean 的某一个属性没有注入,则使用 BeanFacotry 加载后,在第一次调用 getBean() 方法时会抛出异常,而 ApplicationContext 则在初始化时自检,这样有利于检查所依赖的属性是否注入。

三、依赖注入的类型

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

1.构造方法注入

  Spring框架可以采用Java的反射机制,通过构造方法完成依赖注入。
  指 IoC 容器使用构造方法注入被依赖的实例。基于构造器的 DI 通过调用带参数的构造方法实现,每个参数代表一个依赖。

2.使用属性的setter方法注入

  setter方法注入是Spring框架中最主流的注入方式,它利用JavaBean规范所定义的setter方法来完成注入,灵活且可读性高。setter方法注入,Spring框架也是使用Java的反射机制实现的。
  指 IoC 容器使用 setter 方法注入被依赖的实例。通过调用无参构造器或无参 static 工厂方法实例化 bean 后,调用该 bean 的 setter 方法,即可实现基于 setter 的 DI。


Questions

Q1:举例说明IoC容器的实现方式有哪些?
Q2:在Spring框架中,什么是控制反转?什么是依赖注入?使用控制反转与依赖注入有什么优点?
Q3:Spring框架采用Java的(  )机制进行依赖注入。
   A.反射  B.异常  C.事件  D.多态

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值