*阿炮的Spring之旅002站*- 走进Spring的核心思想IOC(控制反转)

每一个框架都自己核心思想,现在我就记录一下Spring的核心思想IOC

IOC容器

我们生活在一个地方,这个地方就会是个容器。我们需要办一些事情,需要这个地方的提供条件来帮助我们完成一些事情。

IOC容器就是这个所谓的地方,它不仅负责创建组件对象、存储组件对象,还负责调用组件去完成工作,并在一定的情况下销毁组件。

IOC思想

简介

IOC 就是 控制反转

就是一些人为的操作变成了让程序来完成

传统方式与IOC方式

  • 传统:组件需要获取资源时,需要组件编写特定的代码从容器中获取资源。
  • IOC:组件需要获取资源时,容器主动将资源推送给需要的组件,我们不需要知道容器如何创建资源对象的,只需要提供接受资源的方式。

IOC的具体实现之DI

DI 就是 依赖注入,是IOC的另一种表达形式,即组件以一些定义好的方式来接受容器的资源注入。

小结

IOC 就是一种控制反转的思想

DI 是对 IOC 的一种具体实现。

IOC容器在Spring中的实现

IOC容器管理的组件被叫做Bean。在创建Bean之前,首先创建IOC容器。

IOC容器实现的两种方式:

① BeanFactory:BeanFactory 是 IOC 容器的基本实现,是 Spring 内部使用的接口,面向 Spring 本身,不提供给使用者。

②ApplicationContext:BeanFactory的子接口,提供了更多的特性,面向 Spring的使用者。

ApplicationContext的实现简介
ClassPathXmlApplicationContext通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象
FileSystemXmlApplicationContext通过文件系统路径读取 XML 格式的配置文件创建 IOC 容器对象
ConfigurableApplicationContextApplicationContext 的子接口,包含一些扩展方法 refresh() 和 close() ,让 ApplicationContext 具有启动、关闭和刷新上下文的能力。
WebApplicationContext基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中

Bean的生命周期

传统Bean

使用关键字new 进行实例化, 然后Bean就能够被使用了,当该Bean不再被引用,则由Java垃圾回收机制处理掉!

Spring 的Bean

简单四步:

  1. 通过构造器创建 Bean 实例(默认是通过无参构造器)。
  2. 为 Bean 的属性设置值和对其他 Bean 的引用(调用 Setter 方法)。
  3. 调用 Bean 的初始化的方法。
  4. 使用 Bean 对象。
  5. ○ 当容器的关闭的时候,会调用 Bean 的销毁方法(需要进行配置销毁的方法)。

详情如图所示:

在这里插入图片描述

Bean的作用域

可以通过scope属性来指定Bean的作用域

  1. singleton:默认值。当IOC容器一创建就会创建Bean的实例,而且是单例的,每次得到同一个。
  2. prototype:原型的。当IOC容器一创建不再实例化该Bean,每次调用getBean方法时再实例化该Bean,而且每次调用都会返回一个新的实例。
  3. request:每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境。
  4. session:同一个HTTP Session 共享一个Bean,不同的 HTTP Session 使用不同的Bean. 该作用域仅适用于WebApplicationContext环境。

@Autowired和@Resource的不同点

  • @Autowired是Spring提供的,@Resource是JDK提供的
  • @Autowired默认是byType 注入,@Resource默认是byName注入。两者都可以指定byType和byName去注入。
  • @Autowired可以通过 @Qualifier 注解来显式指定名称
  • @Resource可以通过 name 属性来显式指定名称

注意:自动注入是找唯一的Bean,如果找到多个或找不到则会抛出异常!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

史上最菜的山炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值