资料下载
本博客内容相关下载资料都放在我整理的博客里面了,大家可以自取!!!!
👉 [JavaEE 学习资料下载](https://gitee.com/chasing-dramas/java-ee-learning-resources)
目录
1,认识Maven
2,Maven当中的核心文件
3,创建一个Spring Web接口
一,认识Maven
1.基础知识引入
在真正开始写 Spring Boot 代码之前,我们先接触了一个东西:
Maven
很多刚开始学 Spring 的同学都会有一个疑问:
我明明是来学 Spring 的,为什么老师先给我讲 Maven?
Maven 到底跟 Spring 有什么关系?
其实原因非常简单:
Spring 项目需要很多别人已经写好的 Java 代码,而 Maven 就是专门帮我们把这些代码下载、管理、组织起来的。
假设我们写一个Spring Boot 项目代码中可能会出现@RestController和@RequestMapping这些
@RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "Hello Spring Boot"; } }这些都是Spring框架提供的代码,所以你想使用得提前拥有Spring的那些.jar文件,所以Maven就出现了,这个就是帮我们将这些代码下载下来并且组织起来,这些代码主要是放在Maven仓库里面的,所以Spring 负责提供功能,Maven 负责把 Spring 需要的代码下载并管理起来,通过pom.xml配置获取jar包,而不需要手动添加jar包
2.Maven的创建
我们通过这样的方式就可以先创建一个Maven
3. Maven Lifecycle
因为我们往往写完一个项目之后,不仅仅写完代码就可以了,还需要编译,测试,打包,最后再是运行发布,所以Maven就给我们提供了一套统一的项目构建方式
在我们创建完之后,再右边的Maven面板中会看到类似下面这样图的结构,我们来先了解一下我们可能会用到的
clean:清除之前编译产生的文件。
compile:编译代码,将.java编译为.class
test:运行测试代码
package:把项目进行打包,可以是jar包,也可以是war包
4,Maven仓库
(1),本地仓库
这个就在你的电脑里面,一般在c盘用户名下面,例如这样:
(2),中央仓库
Maven官方维护的一个远程仓库,大量的Java库都会发布到这里
(3),私服
一般是公司自己搭建的Maven仓库,连接了一些公司自己的项目
二,Maven当中的核心文件
1,pom.xml文件
在我们创建完Maven项目之后,会看到一个pom.xml文件,里面就放当前项目需要的东西清单,我们用一个例子来说明一下,下面这个代码就是放在pom.xml文件里面的
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>1.<dependency>:表示声明了一个依赖,告诉Maven我要什么jar包
2,<groupId>:这个依赖是出自谁家的,属于哪个组织的,像是一个坐标
3,<artifactId>:这个组织下面具体要哪个东西,像是坐标之下的具体事物
当我们的依赖下载下来之后,就会保存在一个我们本地的仓库,一般就是我们的.m2文件里面,大致的过程就像这样
pom.xml
↓
Maven
↓
网上的 Maven 仓库
↓
下载依赖
↓
D:\Maven\.m2\repository
↓
项目使用
2,setting.xml文件
我们还配置了一个这个文件,这个文件是告诉Maven本身该如何去工作,你们可以通过我前面的仓库去下载一个通过阿里云镜像的一个setting,因为我们一般这些依赖都是在国外的,所以我们的下载速度会很慢,但是你配置了我这个会更快一些,具体这个文件最好是是放在和.m2文件一块的
3,怎么理解依赖:
你的代码想完成某个功能,需要用到别人已经写好的代码,这个“别人写好的代码”就是你的依赖,所以我们Maven很重要的一个作用就是依赖管理,将这些依赖管理起来
(1)依赖传递
就是当我的项目依赖B,,但是B有依赖C,我们只需要告诉Maven需要B,这样它就会把C一起下载下来
(2)依赖排除
就是还是刚刚那个情况,当我们不需要B顺带进来的那个依赖C的时候,我们就可以通过下面的代码将C排除出去
<exclusions> <exclusion> ... </exclusion> </exclusions>(3)依赖冲突
当我们项目依赖B和C,但是B依赖1.0版本的D,C依赖2.0版本的D,那我们这个时候就会产生冲突,究竟需要哪一个版本的D,这个时候我们讲究一个原则,就是优先选择依赖路径较短的版本,就比如:
A → B → C → X 1.0 A → D → X 2.0我们就先选择2.0版本的,那我来介绍一个好用的插件,方便我们管理以及检查冲突,跟着我的步骤来安装插件:
在我们下载完成之后,点击下面红色框内的按钮就可以进行查看
4,修改Maven文件目录
我们的Maven本地仓库文件一般在c盘用户底下,叫.m2,可以找一下,因为后续会有更多的依赖引进来,所以我们最好将这个文件挪到自己d盘创建的文件夹下面,避免c盘空间过多的占用,我们前面的setting就可以放在m2点击进去的一个目录下面
m2文件夹点击进去,并将setting放在这里
接下来修改Maven配置的目录,我们将我们c盘下面的m2文件夹整个复制下来,然后粘贴到d盘
两个修改完成就像我这样
我们这个修改一般是两部分,一个是当前的代码,一个是之后的代码
只是设置了当前的代码,要想之后也有这个设置就需要这样做
点击之后依旧把这两个设置修改一下,那两个√也是要点上
三,Spring Boot项目创建
spring boot是什么
先有 Spring,为什么还要有 Spring Boot?spring已经是一个很强大的Java开发框架了,但是早期直接使用spring会出现一个问题:就是卑职很多,入门成本高,所以就出现了spring boot,这个出现就是为了简化spring程序开发的,我们可以将这个理解为spring的脚手架,方便搭建,spring boot并不是代替spring,而是为了让spring更方便使用,我们创建 Spring Boot 项目时,它会通过依赖把 Spring 相关组件带进来
1,前期准备
接下来就开始写spring项目,我们社区版本的话就好安装一个插件,方便我们创建项目的,也就是我们在new的时候就可以直接在那里穿件项目,这个插件叫spring-assistant,我们通过刚刚在插件市场寻找的是没有效果的,我们需要一个老版本的,我将这个插件打包成了一个jar包来供你们使用,也在我的仓库里面,并且你要保证你的idea版本的2021-2022
将这个jar包下载下来之后,放在一个盘下面,不要解压,通过我一步一步来进行安装
这两个市场的插件都是无用的
在安装完成之后可以这样进行一个验证,看看你new的时候左边有没有这个spring Intitializr,接下来我们来直接创建一个简单的接口,具体步骤也是跟着我来
点击next
第一个是你的组名,第二个是你的一个项目名称,这些名称可以自己填写,这里的project type要改成Maven,下面的版本都不变,我们输入之后点击next
我们先选择上面的版本,就选择纯数字的,并且最好版本居中,不要最老的,也不要最新的,然后点击web,点击spring web,点击next
这里填写一个名称,并且这里看目录后面是跟着名称的
点击红色框内的load,下载Maven环境
这里有两个问题,一个是版本写错了,一个是找不到Maven,(这些问题都是社区版本通过上面的创建可能会出现的问题)我们先来解决第一个问题,找到pom.xml文件的版本位置,将这个改成你刚刚选择的版本
然后是第二个,进入setting,修改maven home path(这个就是最开始创建的时候project type没有改成Maven导致的)
2,如何看目录
在我们创建完一个spring boot项目之后,左边的项目目录是这样的,里面该如何去看
java:放Java源代码,以后大量的controller以及各种Java类都会放在这里
resources:static主要放html,css,JavaScript这些静态资源,templates只要用于模版资源
target:当你运行DemoApplication程序之后,就会出现这个,这个是项目编译,构建以后产生的内容
pom.xml:这个就是maven的配置文件
3,这里到底启动了什么
当我们点击启动之后,很多人会觉得,不就是跟以前一样,也只是开了一个main方法吗,这里和之前写的main最大的区别就是web服务器也启动,程序开始监听端口,然后等待服务器请求
4,写第一个Controller
controller是什么:这个就相当于是一个浏览器(前端)进入Java后端的一道入口,以前就单纯写一个慢方法,但是现在是要浏览器发送请求--controller--Java方法--执行代码--返回结果--浏览器
接下来我们先在这个红色框的目录下,创建一个Java类,命名为controller
package com.example.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @RequestMapping("/sayHi") public String sayHi() { return "hello,Spring"; } }我们现在一一来解释一下
@RestController:这个就相当于是告诉spring boot:它是专门用来接收 Web 请求的 Controller,相当于是给类贴了一个类似负责处理浏览器请求的标签
@RequestMapping:这个就是当我们浏览器访问sayHi这个网页的时候,返回对应的sayHi方法
我们写完就可以启动了,我们启动还是在DemoApplication里面,因为这个类是负责将整个项目启动起来,我们写的是启动起来之后怎么处理请求,所以DemoApplication更像是总开关,Controller是每个模块的负责人
这个暂时需要我们自己手动去浏览器里面输入网址:127.0.0.1:8080/sayHi去测试
今天先简单的进行一个了解,完整的流程相当于是这样的:
你在浏览器输入
http://127.0.0.1:8080/sayHi
↓
浏览器:
我要通过 HTTP
访问 127.0.0.1 这台电脑
的 8080 端口
里面的 /sayHi
↓
Spring Boot / Tomcat 收到请求
↓
找到:
@RequestMapping("/sayHi")
↓
执行:
sayHi()
↓
return "hello,Spring"
↓
浏览器显示:
hello,Spring
接下来更多的知识点将在下一个博客进行展示!!