Spring学习 | Spring简介&IOC简介

24 篇文章 0 订阅


学习视频🎥:https://www.bilibili.com/video/BV1Vf4y127N5

一、Spring简介

💬概述:Spring 是轻量级的开源的JavaEE框架,IOC和AOP是Spring 的两个核心部分

轻量级:Spring 需要配置的依赖(jar 包)较少,也不需要额外添加其他依赖,整体体积也较小,可以独立使用

🎯目的:简化企业应用开发

🔑特点

  • 方便解耦,简化开发
  • 支持AOP编程(不修改源码就能实现功能扩展)
  • 方便程序测试和事务管理操作
  • 方便与其他框架进行整合,如整合 MyBatis
  • 简化 JavaAPI 的使用

二、IOC

2.1 简介

💬概述:Inversion Of Control 控制反转,意思就是将对象的创建权反转(交给)了Spring,或者说对象创建的控制权不是"使用者",而是"框架"或者"容器"

🎯作用与目的

  • 简化操作:将对象的创建和对象之间的调用交给Spring处理
  • 降低耦合度:对象之间的调用操作采用工厂模式间接实现,从而降低两个对象之间调用的耦合度

2.2 底层原理

🔑底层实现技术:xml 解析、工厂模式反射

🔑IOC 实现过程:IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

  1. 创建对象(以xml 配置为例):在xml 配置文件中配置将要创建的对象

    <bean id="uDao" class="com.Key.dao.UserDao"></bean>
    
  2. 创建工厂类:在工厂类中解析xml 文件和通过反射创建对象

    public class UserFactory {
        public static UserDao getUserDao() {
            // 1. 解析xml文件,获取对应的class属性值,此处简略具体代码...
            String classValue = class属性值...;
    
            // 2. 通过反射创建对象
            UserDao uDao = (UserDao)Class.forName(classValue).newInstance();
    
            return uDao;
        }
    }
    

🔑IOC 底层中的工厂模式

在这里插入图片描述

2.3 获取对象的API

🔑 接口

BeanFactory

  • IOC容器的基本实现,是Spring内部使用的接口,开发人员一般不使用
  • 特点:加载配置文件时不会创建对象,在获取对象时才创建

ApplicationContext(推荐)

  • BeanFactory接口的子接口,提供更强大的功能,一般由开发人员使用

  • 特点:在加载配置文件的时候就已经创建好对象

    ❓为什么使用ApplicationContext会更好:配置文件、创建对象等操作比较耗时耗资源,所以一般将这些操作放在项目启动(服务器启动)前完成,项目启动后就可以直接使用,而不是等到要使用时才来创建
    📚常见八股文:BeanFactoryApplicationContext的区别

🔑对应实现类

  1. FileSystemXmlApplicationContext:传入参数为文件的全路径,即在磁盘中的位置
  2. ClassPathXmlApplicationContext:传入参数为文件在项目中src的类路径,如果放在src目录下,直接写文件名即可
// 加载spring配置文件(xml),创建工厂类对象
// 1. 方式一
BeanFactory context01 = new ClassPathXmlApplicationContext("bean01.xml");

// 2. 方式二
ApplicationContext context02 = new ClassPathXmlApllicationContext("bean01.xml");

🔑获取对象

/* 
    根据创建的工厂类对象context,获取对应对象
     - 第一个参数:xml文件中<bean>标签的id属性值
     - 第二个参数:需要获取的对象对应的Class对象(如果不写,返回对象类型默认是Object)
*/
UserDao userDao = context.getBean("uDao", UserDao.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值