7天学完Spring:Spring框架搭建和解析以及Bean对象的创建

前言

这一部分就是关于Spring的部分了,在这里我们主要学习四个部分

1、Spring
2、Spring Boot
3、Spring NVC
4、MyBatis

这里特别对最后一个说一下,MyBatis。它是用来 代替 JDBC 编程,JDBC 作为Java 提供的一组 用来 操作数据库 的 API非常繁琐

1、获取数据源
2、与数据建立连接
3、编写 SQL 语句。
4、执行SQL
5、此时 SQL 已经执行完毕,然后需要我们去释放资源

所以重复的代码就很多,所以不推荐使用。这里我们一步一步来

一丶为什么学框架

  1. 学习框架相当于从“小作坊”到“工厂”的升级,小作坊什么都要自己做,工厂是组件式装配,特点就是高效。
  2. 框架更加易用、简单且高效

<1>框架的便捷性

什么意思呢?

1、 ⽆需配置 Tomcat,点击“运⾏”按钮就可以运⾏项⽬,Spring Boot 内置了 Web 容器(可直接运⾏)。
2、 快速添加外部 jar 包(依赖)。
3、 快速发布项⽬(使⽤ java -jar ⽅式就可以发布)。
4、 对象⾃动装配。
5、 …

<2>和servlet进行对比

我们传统的servlet怎么使用的呢?

1、创建一个 maven 项目
2、在 pom.xml 中 引入相关依赖
3、创建特定的目录
4、编写代码
5、打包
6、部署
7、验证程序
8、发布【使用 (Tomcat) 进行 程序的部署和发布】

光是这一连串的流程下来,就让人绝望,我们可以清楚的发现servlet有以下不足

1、添加外部 jar 不⽅便,容易出错,⽐如添加了⼀个不匹配的外部 jar 版本;
2、运⾏和调试的时候需要配置 tomcat 不⽅便;
3、 发布不⽅便,servlet 项⽬必须依靠外置的 tomcat(外置的 web 容器)运⾏。
4、 路由配置不⽅便,⼀个访问地址对应⼀个 Servlet 类。
5、…

而以上痛点问题,都可以通过 JavaEE 进阶框架解决,接下来我们一起来看。

二丶Spring核心和设计思想

<1>Spring是什么?如何理解Spring

先从第一个问题开始,啥是Spring?
Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单。
所以总结一下:Spring就是包含了众多工具方法的loC容器

这里可能就有铁子会发问啥是容器?

容器是用容纳某种物品的(基本)装置。

是不是有点迷,那就想想我们的数据结构,List,Map。如果还是想不出来,那就再想想我们的Tomcat

List/Map -> 数据存储容器
Tomcat -> Web 容器

这里是不是好奇为啥Tomcat是一个容器呢?

但是 Tomcat 为什么是一个 Web 容器呢?
思考一下:
Tomcat 是用来运行 外部的项目,因此它是一个 Web 容器。
你有一个项目,想要运行。
肯定是要将项目部署到 Tomcat 的 webapps 目录底下,才可以运行。
此时,webapps 就是一个项目的容器
而 webapps 目录,就是 Tomcat 下面的一个子目录。
那么,我们将 Tomcat 称为是一个容器,没有任何问题

<2>IoC和DI是什么?区别?

IoC = Inversion of Control 翻译成中文是“控制反转”的意思,也就是说 Spring 是一个“控制反转”的容器,怎么理解这句话呢?

分成两点,第一个点是控制,第二个点是反转。
也就是说:之前程序的控制权限是在我们自己手上,现在,我们把这个控制权交出去了。

那么通过一个实际的情况来说一下

我们在 A 类 中,想去调用 B 类中的方法,是怎么做的?
是不是 要去new B 类对象,通过 对象 去调用 B类中的方法。当前 B 的控制权,是我们手上的。而 控制反转,就是将我们手上的权限,交由 “其他人” 来操作这个类。这个“其他人”,就是 Spring 框架。
此时,我们想要 A 类中调用 B 的时候, 告诉 框架,我要在 A 中 调用 B 了。
至于 B 的生命周期,和我们没有任何关系。
这是控制反转。

前面也说了:spring是一个控制反转容器

也就是 像之前在传统开发的时候,所有需要我们自己去new东西,都不需要我们再去new 了。因为我们把控制权 “反转给了” Spring 框架。Spring 会帮我们管理所有的对象(Bean)。
哪一个例子来举例吧
在这里插入图片描述
比如说我们构造一个car类,然后我们肯定是要new一个car对象,在car对象进行初始化的时候是不是要new一个Framework对象?那么继续往下走,每一次的初始化都带着底层的对象的new,那么问题就来了,这对应着什么呢?
如果轮胎的尺寸的固定的,然而随着对的车的需求量越来越大,个性化需求也会越来越多,这时候我们就需要加工多种尺寸的轮胎,那这个时候就要对上面的程序进行修改了。这一修改,就是全部的修改呀!
那么我们怎么解决呢?
我们可以尝试不在每个类中自己创建下级类,如果自己创建下级类就会出现当下级类发生改变操作,自己也要跟

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值