• 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.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>5.3.20version>
    dependency>
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.11version>
        <scope>testscope>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ②在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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果:(成功获取)

    在这里插入图片描述

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

    在这里插入图片描述

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

    方法说明
    getBean(String s)传入配置文件中对应的id获取Object对象,再进行转换为所需对象。
    getBean(Class aClass)传入要获取的类型,无需转换类型。(要求配置文件中该类型的bean唯一)
    getBean(String s, Class aClass)传入配置文件中对应的id和类型,直接获取所需对象。
  • 相关阅读:
    职业教育的风口到来,你准备好迎接这一波红利了吗?
    idea如何排查jar冲突
    Android 富文本SpannableString
    Linux之分区【详细总结】
    【Linux安装jmeter性能测试】
    微信扫码跳转小程序并传参
    C++ string介绍和坑
    SCADA 总体设计(二)
    Vue 2.0/3.0
    CompletableFuture详解
  • 原文地址:https://blog.csdn.net/weixin_48312484/article/details/126026495