2-1、IOC思想以及实现

2.1、IOC思想

IOC:Inversion Of Control,反转控制。

获取资源的传统方式:

在程序组件中需要获取资源时,传统方式我们需要主动的从容器中去获取资源,这种模式要求开发人员了解特定资源在具体容器中的获取的方法。开发效率较低,学习成本高。

例:想要吃饭,传统方式:买菜——>洗菜——>切菜——>炒菜——>吃饭。

IOC思想获取资源

反转控制思想与传统获取资源方式相反,改为由容器主动提供资源,开发人员只要做好接受准备即可,无需了解资源获取的具体方法。开发效率高,学习成本较低。

例:想要吃饭,IOC方式:点外卖——>拿外卖——>吃饭。

DI(Dependancy Injection)

依赖注入,Spring对IOC思想的实现方式。简单来说就是你想吃饭但是不想做饭(IOC),所以你点外卖(DI)。

DI的实现解释实现就是通过预先设计好的方式接受容器资源的注入。

2.2、IOC容器在Spring中的实现

IOC容器就是IOC思想在Spring的一个罗德实现,IOC容器中管理的组件叫做bean,创建bean之前要先创建IOC容器。当你不想做饭时,DI是点外卖是一种方法,那么IOC就是商家,bean就是商家做出来的饭。

构建IOC容器有两种方法:

1、BeanFactory

BeanFactory是IOC容器的基本实现,是Spring内部使用,开发人员无法调用。

2、ApplicationContext

ApplicationContext是BeanFactory的子接口,拥有更多的功能,提供给开发人员使用。(具体结构如下图)

在这里插入图片描述

类型名功能介绍
ConfigurableApplicationContextApplicationContext的子接口,实现了启动、关闭和刷新上下文的功能。
FileSystemXmlApplicationContext通过读取文件路径来创建IOC容器。
ClassPathXmlApplicationContext通过读取类路径来创建IOC容器。
WebApplicationContext专门为Web应用准备,基于Web环境创建IOC容器对象,并将其存放在ServletContext域中。

2.3、基于XML管理bean

2.3.1、框架搭建

①引入maven依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.20</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>

②在resource下建立Spring配置文件:

建议命名为:applicationContext

在这里插入图片描述

③在配置文件中配置组件

在这里插入图片描述

④测试

@Test
public void test(){
    //1.获取ApplicationContext
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    //2.获取指定类对象
    Student student = (Student) applicationContext.getBean("student");

    System.out.println(student);
}

结果:(成功获取)

在这里插入图片描述

2.3.2、获取Bean的三种方法以及注意事项

在这里插入图片描述

可以看到,获取bean的方法根据参数不同划分为5中,这里我们说明常用的三种。

方法说明
getBean(String s)传入配置文件中对应的id获取Object对象,再进行转换为所需对象。
getBean(Class aClass)传入要获取的类型,无需转换类型。(要求配置文件中该类型的bean唯一)
getBean(String s, Class aClass)传入配置文件中对应的id和类型,直接获取所需对象。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值