【JavaEE】JavaEE进阶:框架的学习 - Spring的初步认识

JavaEE进阶首章

在这里插入图片描述

【JavaEE】JavaEE进阶:框架的学习 - Spring的初步认识

在之前的学习中,我们已经掌握了Servlet的框架去完成一个项目,而目前企业正在使用的技术则是我们接下来重点学习的!

本文章为 JavaEE进阶的第一篇文章,JavaEE进阶我们将学习:

  1. Spring全家桶
    • Spring / Spring Boot/ Spring MVC,Spring Cloud为社招必须,校招不须
  2. MyBatis
  3. Redis

最后,我们将对我们之前做的项目进行优化,或者说重新用这些框架写一遍这些代码~

1. JavaEE初阶 与 JavaEE进阶 开发上的区别

虽然我们在JavaEE初阶就学习了一个小框架,Servlet,用得也不错,也好像省去很多功夫,几行后端代码就能完成很多功能,但是这是在JavaEE进阶之前的认知!

而JavaEE进阶学习的框架将更加的方便!

  • 框架的存在就是 “人类的懒”,框架就是为了方便开发,提高开发效率,所以越好的框架,使用起来就应该越方便~
  • Spring全家桶其实就是这么一个很好的东西,开源框架!

有人比喻“学习框架就像从小作坊到小工厂的升级”

  • 所以学完之后,我们会发现原来的日子过得那么的惨🤣

接下来就让我们来对比一下,Servlet 与 Spring Boot

1.1 Servlet VS Spring Boot

Servlet涉及的东西不必多说,我们谈谈Spring Boot的优点

  1. 无需配置Tomcat,在项目中“点击运行”即可
    • 这是因为Spring Boot内置了Web容器,一个Spring Boot就有一整个Tomcat
  2. 快速添加外部jar包
  3. 快速发布项目(例如:可以使用 java -jar 方式,就可以发布)
  4. 对象自动装配

接下来我们演示一下Spring Boot开发(不必在意为什么,就看看方不方便)

Servlet的开发参考博客:【JavaEE】Tomcat-Servelet第一个helloworld程序_s:103的博客-CSDN博客

1.2 Spring Boot的 “hello world”代码演示

1.2.1 Spring Boot项目的创建

首先我们要在IDEA创建Spring项目,则需要去下载一个插件:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

下一步:

  • 选择项目类型
  • 选择语言
  • 选择打的包的类型
  • 选择java的jdk的版本

在这里插入图片描述

  • 不用改为war包,war包是啊佩奇的Servlet的要求
  • 所以点这个会额外多个类

在这里插入图片描述

下一步:

  • jdk8只能使用2头的版本
  • 选择用到的工具/插件/jar包

在这里插入图片描述

下一步:

在这里插入图片描述

点击finish即可~

在这里插入图片描述

判断是否创建成功:

在这里插入图片描述

  • 下面那个就是打war包的(重新创建一个吧~)

在这里插入图片描述

在这里插入图片描述

然后自动加载~

配置国内源(不然会很慢):

在这里插入图片描述

在对应目录里创建个settings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 htt
                              p://maven.apache.org/xsd/settings-1.0.0.xsd">

    <pluginGroups>
    </pluginGroups>
    <proxies>
    </proxies>
    <servers>
    </servers>
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
    <profiles>
    </profiles>
</settings>

在这里插入图片描述

这样会比较快~

或者找我拿一个xml文件~

  • 直接下载到那个目录下即可,(我的xml文件的内容更多),但是刚才的代码也够用~
  • 前提是你那个目录原本是没有settings.xml的,如果本来就有,就只需要插入刚才的代码进去即可

版本号2.7.13后面那个单词删后,再刷新加载:

在这里插入图片描述

创建不了项目(返回500,可能是因为网络的问题,可能是你的梯子的原因),重新创建几次就行了

在这里插入图片描述

1.2.2 hello world

ctrl shift f10运行它

在这里插入图片描述

  • 需要打开个插件

我们现在还有很多配置没弄,所以我就用网图来解释了:

在这里插入图片描述

我们没有配置smart tomcat,就可以运行起来了~

在这里插入图片描述

一个类对应多个url:

在这里插入图片描述

运行:

  • 访问127.0.0.1:8080/注解名 即可
  • 不需要项目名,因为这个端口肯定只有一个项目目前在用(Servlet多此一举),所以用注解名就能确保唯一性了
    在这里插入图片描述
1.2.3 发布

在这里插入图片描述

通过日志找到jar包

  1. 命令行java -jar demo.jar,就可以自动启动Tomcat,网站也可以访问
  2. 将这个自动生成jar包,部署在网站就ok了,这个以后再讲~

所以SpringBoot:

  1. 添加外部jar包更容易,无需关注版本问题
  2. 运行项目更方便,无需配置tomcat
  3. 发布项目更方便,无需配置tomcat
  4. 添加路由更方便,无需写多个类,一个方法就可以是一个路由

2. 框架的学习

  1. 基础框架Spring开始(工具箱)
  2. Spring Boot快速开发Spring脚手架
  3. MyBatis快速操作数据库
  4. 其他:日志、事物、拦截器…

3. Spring的初步认识

3.1 Spring是什么

Spring 是一个开源的轻量级 Java 开发框架,它旨在简化 Java 应用程序的开发。Spring 提供了丰富的功能和组件,用于构建各种类型的应用程序,包括企业级应用、Web 应用、移动应用等。

指的就是Spring Framework

一句话概况Spring:Spring是包含了众多工具方法的IoC容器

  • 这些工具方法就是我们要积累的学习的工具方法~

那问题来了,什么是容器,什么是IoC?

容器就是用来容纳其他物品的装置。

例如:

  1. List/Map是数据存储 容器
  2. Tomcat是Web 容器

而Spring则是IoC 容器

IoC = Inversion of Control 翻译成中文就是“控制反转”,也就是说Spring是“控制反转”容器,这样回答是0分的,因为控制反转就是直译,回答面试官要表达明确的含义!

3.2 IoC是什么

get英语的含义则是:“控制权的反转”

这个控制权是一部分代码,例如对象创建/对象的生命周期的“控制权”,属于程序员,而现在反转了,属于Spring

  • 不是方向的反转,而是“剧情的反转”

  • 也就是说Spring现在有权利去控制一部分代码,在开发过程中

例如你有一个类A,不需要new A()了,直接向Spring框架要一个即可

当然,这样讲还是有点笼统,接下来用一个例子一段代码让你感受其含义

  • 一个普通的java项目

3.3 IoC的好处

以一辆车为例:
在这里插入图片描述

  1. 传统开发就相当于,每次获得拿一辆车,就得现场造
  2. Spring就相当于在车库里面取

并且IoC的优点有:松耦合

  • 低耦合
3.3.1 传统程序开发模式

在这里插入图片描述

通过init方法去造车:

在这里插入图片描述

运行结果:

在这里插入图片描述

但是,根据常识,不限于这辆车(Car是一个虚拟的例子),一个产品往往需要满足用户的一些特殊需求,做出一些“定制”的东西~

  • 这辆车,我身材高达,我想要轮子大一点;我身材瘦小,我想要轮子小一点…

对于刚才的开发模式,我们就要做出以下改动:

在这里插入图片描述

运行结果:

在这里插入图片描述

在这里插入图片描述

你可能已经发现了,这样的耦合性太高了,增加这么一个功能,就要改这么多代码,我要求更多,要改的代码就越多了

3.3.2 Spring开发模式

在这里插入图片描述

通过init方法去造车:

在这里插入图片描述

在这里插入图片描述

  • 通过new Test()的方式去拿到“框架”里的一个car实例

运行结果:

在这里插入图片描述

同样的,我要是想要大轮子或者小轮子:

我们只需要在“向框架拿Tire对象的时候”,去拿另一个Tire对象

在这里插入图片描述

运行结果:

在这里插入图片描述

在这里插入图片描述

可见,IoC很好的实现了“松耦合”!


文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

代码链接:IoC-understand/src · 游离态/马拉圈2023年7月 - 码云 - 开源中国 (gitee.com)

具体Spring项目如何去开发,要点有哪些,下一篇博客会有很好的感受!


  • 45
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 37
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

s:103

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

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

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

打赏作者

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

抵扣说明:

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

余额充值