JavaEE进阶首章
【JavaEE】JavaEE进阶:框架的学习 – Spring的初步认识
在之前的学习中,我们已经掌握了Servlet的框架去完成一个项目,而目前企业正在使用的技术则是我们接下来重点学习的!
本文章为 JavaEE进阶的第一篇文章,JavaEE进阶我们将学习:
-
Spring全家桶
-
Spring / Spring Boot/ Spring MVC
,Spring Cloud为社招必须,校招不须
-
-
MyBatis
-
Redis
最后,我们将对我们之前做的项目进行优化,或者说重新用这些框架写一遍这些代码~
1. JavaEE初阶 与 JavaEE进阶 开发上的区别
虽然我们在JavaEE初阶就学习了一个小框架,Servlet,用得也不错,也好像省去很多功夫,几行后端代码就能完成很多功能,但是这是在JavaEE进阶之前的认知!
而JavaEE进阶学习的框架将更加的方便!
-
框架的存在就是
“人类的懒”
,框架就是为了方便开发,提高开发效率,所以越好的框架,使用起来就应该越方便~ - Spring全家桶其实就是这么一个很好的东西,开源框架!
有人比喻“学习框架就像从小作坊到小工厂的升级”
- 所以学完之后,我们会发现原来的日子过得那么的惨🤣
接下来就让我们来对比一下,Servlet 与 Spring Boot
1.1 Servlet VS Spring Boot
Servlet涉及的东西不必多说,我们谈谈Spring Boot的优点
-
无需配置Tomcat,在项目中“点击运行”即可
-
这是因为Spring Boot内置了Web容器,一个Spring Boot就有一整个Tomcat
-
- 快速添加外部jar包
- 快速发布项目(例如:可以使用 java -jar 方式,就可以发布)
- 对象自动装配
- …
接下来我们演示一下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包
- 命令行java -jar demo.jar,就可以自动启动Tomcat,网站也可以访问
- 将这个自动生成jar包,部署在网站就ok了,这个以后再讲~
所以SpringBoot:
- 添加外部jar包更容易,无需关注版本问题
- 运行项目更方便,无需配置tomcat
- 发布项目更方便,无需配置tomcat
- 添加路由更方便,无需写多个类,一个方法就可以是一个路由
- …
2. 框架的学习
- 基础框架Spring开始(工具箱)
- Spring Boot快速开发Spring脚手架
- MyBatis快速操作数据库
- 其他:日志、事物、拦截器…
3. Spring的初步认识
3.1 Spring是什么
Spring 是一个开源的轻量级 Java 开发框架,它旨在简化 Java 应用程序的开发。Spring 提供了丰富的功能和组件,用于构建各种类型的应用程序,包括企业级应用、Web 应用、移动应用等。
指的就是Spring Framework
一句话概况Spring:
Spring是包含了众多工具方法的IoC容器
- 这些工具方法就是我们要积累的学习的工具方法~
那问题来了,什么是容器,什么是IoC?
容器就是用来容纳其他物品的装置。
例如:
List/Map是数据存储 容器
Tomcat是Web 容器
而Spring则是
IoC 容器
IoC = Inversion of Control 翻译成中文就是“控制反转”,也就是说Spring是“控制反转”容器,这样回答是0分的,因为控制反转就是直译,回答面试官要表达明确的含义!
3.2 IoC是什么
get英语的含义则是:
“控制权的反转”
这个控制权是一部分代码,例如
对象创建/对象的生命周期的“控制权”
,属于程序员,而现在反转了,属于Spring
-
不是方向的反转,而是“剧情的反转”
-
也就是说Spring现在有权利去控制一部分代码,在开发过程中
例如你有一个类A,不需要new A()了,直接向Spring框架要一个即可
当然,这样讲还是有点笼统,接下来用一个例子一段代码让你感受其含义
- 一个普通的java项目
3.3 IoC的好处
以一辆车为例:
- 传统开发就相当于,每次获得拿一辆车,就得现场造
- 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项目如何去开发,要点有哪些,下一篇博客会有很好的感受!