Java开发框架之对于Tomcat,Maven、Mybatis与SpringBoot的集成使用原理

前言

一个SpringBoot项目集成的有很多东西,这些东西需要去梳理,这篇文章就是对一个SpringBoot项目中集成的Tomcat、Maven、Mybatis的解读与联系

在javaweb方面的学习中,对于Tomcat,springboot,maven,mybatis这几个关键的后端开发的东西的理解与掌握不太透彻,搞不清楚他们之间的联系,对于开发框架一头雾水的,可以看一下这一篇我对于这部分知识的梳理与理解

这篇文章主要讲述对于Tomcat、Maven、Mybatis的介绍以及与SpringBoot的连用,关键作用的解读

:这篇文章不讲述具体实现,只介绍和梳理,用通俗的语言,让读者有个更深的理解

目录

前言

Maven

Maven的作用

Maven坐标

Tomcat

Mybatis



Maven

Maven是一款用于管理和构建java项目的工具,它基于项目对象模(POM)的概念,通过一小段描述信息来管理项目的构建

所以Maven只是个工具!


Maven的作用


1:依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
有了Maven之后不用再手动导入jar包了,只需要在配置文件当中简单描绘一下所需要的依赖的信息,Maven会自动联网下载

关键解读:

依赖是什么?

在 Java 项目中,你需要使用许多第三方库(如 JUnit、Spring、Log4j 等)。这些库通常以 .jar 文件形式存在。

手动管理问题:你需要自己下载 .jar 文件,添加到项目路径,处理版本冲突,非常麻烦。

Maven 的解决方案:通过声明依赖的 坐标(GAV),Maven 会自动从仓库下载并管理这些 .jar 文件。

对于坐标下面会有解读

2:统一项目结构:提供标准,统一的项目结构
不论用哪种开发工具,生成的Maven结构都是一样的
            src
                main:实际项目资源
                    java:java源代码目录
                    resources:配置文件目录
                test:测试项目资源
                    java
                    resources
                pom.xml:项目配置文件(核心配置文件,当前工程所需要导入的依赖的信息都在这个配置文件中配置)

对于这个结构,创建过springboot项目的都应该知道,创建springboot项目时,只要勾选了maven,那么你的springboot项目的文件结构就是这样

这就是Maven最重要的两个应用


Maven坐标


Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
最重要的就是使用坐标来引入项目中需要的依赖

这部分内容 ,你需要打开maven目录的pom.xml文件
pom.xml的主要组成:

对于项目基础信息的介绍(名字和版本之类的)+项目所引用的依赖

信息介绍
            groupid:定义当前Maven项目隶属组织名称(通常是域名反写)
            artifactid:定义当前Maven项目名称(通常是模块名称)
            version:定义当前项目版本号
依赖管理
        依赖配置
在Maven的xml文件下,先写dependencies标签,再写dependency标签,在artifactId里写要依赖的包,在version里写版本,groupId里写组织Id

这就是maven对于依赖的配置

dependencies标签里边都是该项目所依赖的配置信息,通过一个一个的dependen分隔
注意:如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖
如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索

注:后边对仓库有详细解读

依赖的几个特点:
1:依赖传递
                依赖具有传递性
                直接依赖:在当前项目中通过依赖配置建立的依赖关系
                简介依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
一个Maven文件可以依赖另一个Maven文件,这个文件里边的依赖包或文件,也会依赖那个Maven文件,可以理解为继承
注:可以在diagram中查看继承关系
如果A项目只想依赖B项目,而不想依赖B项目中依赖的文件,就可以使用排除依赖
2:排除依赖:排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
方法:先定义exclusions标签,再定义exclusion标签,需要排除的依赖定义在里边的group和artifactId,不需要version

在一个项目文件中,如果两个依赖传递了不同版本的 C,Maven 会按 最短路径优先 或 声明优先 原则选择版本。可以通过 <exclusions> 手动排除冲突依赖

3:依赖范围
依赖的jar包,默认情况下,可以在任何地方使用,可以通过<scope>…</scope>设置其作用范围
作用范围的种类
1:主程序范围有效(main文件夹范围内)
2:测试程序范围有效(test文件夹范围内)
3:是否参与打包运行(package指令范围内)
                compile(默认)主程序、测试程序、打包(运行)都有效
                test        只在测试程序中有效
                provided        在主程序和测试程序中有效
                runtime        在测试程序和打包(运行)中有效 
注意:Maven中自佩戴的打包插件只能把当前项目的资源打包进去,它所依赖的插件不能被打包进去,因此只能使用其他的打包插件
4: 生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
        Maven中有3套相互独立的生命周期:
                    clean:清理工作
                    default:核心工作,如:编译、测试、打包、安装、部署等
                    site:生成报告、发布站点等

                在Maven面板中罗列的有Maven的生命周期阶段(lifecycle)    
                在同一套生命周期中,运行后面的阶段,前面的阶段也会运行
                如果想要跳过前边的阶段,则点击当前阶段后,再点击skip即可
                主要的5个阶段:
                    clean:移除上一次构建生成的文件            执行完,target目录就没了
                    compile:编译项目源代码为字节码文件
                    test:使用合适的单元测试框架运行测试(junit)
                    package:将编译后的文件打包,如:jar、war等
                    install:将打包好的jar包或者war包安装到本地仓库
                    
注:在lifecycle下面的Plugins中是生命周期阶段对应的插件,点击生命周期阶段其实是运行下面对应的插件

运行方式:
                    1:在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行
                    2:在命令行中,通过命令执行
上边都是抽象概念
Maven并不执行具体的操作,它的具体的操作是由与其绑定的Maven插件来完成的,它本质就是插件执行工作

补充:

Maven仓库

分类:

1:本地仓库:位于开发者本地机器上(默认路径是 ~/.m2/repository),存储项目依赖的构件(JAR、插件等),避免每次构建都从远程下载。

当 Maven 第一次运行时(例如执行 mvn clean install),会在用户目录下创建本地仓库,初始状态下,本地仓库是空的,没有任何依赖或插件。即使本地仓库初始为空,Maven 本身会自带一些基础插件(如 maven-clean-pluginmaven-resources-plugin 等),但这些插件的具体版本仍会从远程仓库下载并缓存到本地。

2:中央仓库:包含绝大多数开源库的公共依赖

3:远程仓库:包括私有仓库和其他公共仓库

补充

当项目需要一个依赖时,Maven 会按照以下顺序查找:

1:先检查本地仓库,看本地仓库是否有这个依赖,有的话直接使用

2:如果配置了镜像(如阿里云)或私有仓库(如 Nexus),Maven 会尝试从这些仓库下载依赖如果没有,Maven会连接中央仓库去下载

3:一旦依赖从远程仓库成功下载,Maven 会自动将其缓存到本地仓库,后续构建直接使用本地副本,不再重复下载

需要注意:Maven中央仓库的下载速度是很慢的,因此非常推荐使用镜像,国内有很多私有仓库的依赖也很全,并且下载速度更高,因此使用镜像,从远程仓库去下载是更好的选择


Tomcat

它是一个纯 Java 的 HTTP Web 服务器,用于运行 Java Web 应用程序

对于Tomcat的理解,需要有一点网络编程的基础

在这里我用我自己的语言,去理解和解释这部分知识

你在浏览器中打开一个网页,背后是客户端与服务器的交互,客户端就是你的浏览器,向服务器发送请求,我要浏览这个网页,你给我加载出来,然后服务器向浏览器发送这个网页的内容

这个解释不太严谨但是很形象哈

Tomcat就是一个服务器,而且是为java服务的服务器,当你创建一个springboot项目时,你会不会疑惑注解的作用

对于Tomcat的配置的很简单,因此我这里重点讲述Tomcat与springboot的联系

Toncat集成在springboot里边了,但是为什么要这样做呢?

在上边所说的浏览器和服务器的交互,我们可以知道,在学习开发框架之前,我们的代码其实都是单机的,要想使我们的代码能够通过浏览器浏览到,就需要把我们写的java代码部署到服务器上

而springboot刚好集成了Tomcat服务器,因此我们可以通过springboot来把一个普通的java类的效果,能够被浏览器浏览到

底层原理:

Tomcat 是 Servlet 容器,负责接收 HTTP 请求,管理 Servlet 的生命周期(创建、调用、销毁)。本身不能直接运行普通 Java 类,只能运行符合 Servlet 规范 的类(如 HttpServlet)。而Spring Boot 提供 DispatcherServlet(核心 Servlet)继承自 HttpServlet,由 Tomcat 加载和管理。

它的作用是:

路由请求(找到对应的 @Controller 方法)

参数解析(如 @RequestBody、@RequestParam)

视图解析(返回 JSON/HTML 等)

普通 Java 类如何被 Tomcat 识别?

Spring Boot 通过注解(如 @Controller)将普通 Java 类转换成 Web 组件。

浏览器请求 → Tomcat → DispatcherServlet → Spring 找到对应的 @Controller 方法 → 执行业务逻辑 → 返回响应。
总结:

一个普通的java类,通过注解,被Tomcat识别,然后Tomcat将这个类里边所执行的信息返回给浏览器

在这部分的学习中,还有更加深入的知识,如三层架构/分层解耦等,这些还是比较重要的,因此,我将这部分内容转移到下篇文章中


Mybatis

想要了解Mybatis,你必须移步我的下一篇文章,普通的java类在Tomcat服务器
,因为Mybatis就是对三层架构的最后一层dao层的简便框架

 介绍:

dao层是数据处理层,而在项目中,我们对于数据的处理一般是处理数据库,Mybatis简化了JDBC(操作数据库的规范),使得dao层更加简便的处理数据库中的数据

底层逻辑:

在图形化工具中,在图形化工具里敲写SQL语句,然后将语句发送给数据库服务器来执行,数据库服务器再将执行的结果返回给图形化工具
Mybatis与图形化工具与数据库服务器的交互逻辑相同

对于Mybatis,它的难度在于使用,跟springboot的交互就很简单了,上边说了,Mybatis就是dao层对数据库进行操作,将数据库里的数据,能够被springboot项目所使用,完成了springboot与数据库的连接


这篇文章为个人根据所学所总结的重难点理解,请勿转载,如有任何问题,请及时与我联系讨论

——迷糊小白告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值