2-搭建开发环境

1.2 搭建开发环境

这次课我们来搭建开发环境,在搭建环境之前,我想先强调几点:

  1. 作为一个开发者,你应该养成一个好的习惯,你安装的所有的开发工具,都应该把它放到英文的,并且没有空格的路径之下。因为有些开发工具,放到中文路径下会有问题,所以大家养成这样的一个习惯,规避这样的问题。
  2. 我们是做账号开发的,我们安装的很多工具它是依赖于 JDK 的,所以在我安装这些工具之前,需要把 JDK 安装好。

对于 JDK,你安装的时候有最低的版本要求,必须大于等于 JDK 1.8 我安装的是 JDK 12,因为我们课程中要用到 Spring Jar 包,他对 JDK 的版本有这样的要求。再一个我们这次课并不是说把所有的工具都装好,只是先装两个,一个是 Maven,另外一个是 IDEA,能够让我们普通的基本的程序能够跑起来,先达到这样的目标,后面的课程中我们到哪个阶段再安装对应的工具。

好了,首先我们先来安装 Maven,在安装 Maven 之前, 我再对 Maven 做一个简单的介绍。Maven 它对我们来讲主要有两个价值:

  1. 它能帮我们构建项目,包括创建项目编译项目,测试打包,生成文档等等,我们时时刻刻都离不开这样的构建工具。
  2. 第二个它还能够帮我们管理项目中的 Jar 包。我统计了一下,当我把牛客社区项目开发完以后,一共引入了 160 多个包,如果说没有一个统一的工具去管理这些包,没有一个统一的位置去下载这些包,你到处去找这些包的话,很显然是非常麻烦的一件事,Maven 能够很好的帮我们管理这些 Jar 包是一个很好用的工具。

关于 Maven,我们需要先了解它的一个核心的概念叫 Maven 仓库,就是存放构件的一个位置。什么是构件?Maven 它所依赖的资源,在构建项目时,它所依赖的插件 Jar 包这都叫构件。而 Maven 仓库,它分为两种,一种是本地仓库,一种是远程仓库:

  1. 本地仓库就是你本机你自己电脑上的一个目录。对于 Windows 系统而言,这个波浪它代表的是家目录,就我这个电脑而言,我的电脑的名字叫 Administrator,家目录它指的是我的系统盘,你看一下我的系统盘是 c 盘,用户 Administrator 这个就是家目录。当然我这个目录之下现在还没有什么.m2,我需要把 Maven 安装好,能够跑起来。这个时候它会自动创建这个.m2,默认没有。
  2. 远程仓库是网站,我们可以从网站的下载包,它又分为中央仓库、镜像仓库和私服仓库。

中央仓库就是 Maven 的官网。官方的镜像仓库是第三方,别的网站也提供了对中央仓库的拷贝,因为如果全球所有人都访问 Maven 中央仓库,速度很慢,一定会很慢,我们可以访问离我们近的镜像仓库,这样的话下载速度会快,我们国内访问阿里云的镜像仓库就比较方便,所以一会我安装 Maven 以后会把远程仓库改为镜像仓库,而不用默认的中央仓库。第三个是私服仓库,就是你去一家比较大的公司,他可能会自己搭建一个镜像仓库,他自己用就叫私服仓库。作为我们这个学生来说,我们在学习阶段,没有必要搭建私服仓库,访问中央仓库又慢,所以镜像仓库是我们最好的选择。好了,再补充一点,本地仓库和远程仓库它有什么联系?就是当 Maven 想下载包,想下载构件的时候,他会先看一下你本地仓库里有没有这个东西,如果有就用,如果没有他会从远程仓库下载到本地,再用,它是这样的一个顺序。

好,Maven 介绍完以后,接下来我给大家演示一下 Maven 怎么去安装,怎么去使用。这个是 Maven 的官网,我点击进去,因为我们要下载是吧,所以我就点这个 download。它下面应该有一个表格,这个表格有列举了几个版本,其中 binary 开头的是不带源码的版本, src 开头的是带源码的版本,因为我们只是用,所以说我们下载 binary 就可以了。

binary 又分为两个,一个是它一个是 GLP,这个是针对 Linux 或者是 UNIX 系统而言的,这个是针对 Windows。因为我是 Windows,所以我点下载,当然我本机已经提前下载好了,我就不点了,你们自己点进行下载。

好,我打开我本机上下载好的资源,安装就很简单了,只要你把它解压缩到某一个目录下就可以,我就来解压。

解压文件我把它解压缩到 d 盘 work 目录下就可以了,好,我去找一下 d 盘 work,这是解压缩好的 Maven 工具。接下来我刚才说了,它默认会访问,访问的远程仓库是 Maven 的中央仓库,有点慢,我要把它改成阿里云的,在哪里改?

这里,conf 是 config 配置的缩写,打开以后,有一个 settings.xml,我们打开配置文件去修改,你可以从头往下看,它这里大部分都是注释,都是一些说明,如果要改镜像仓库的话,在这个位置 mirrors 就是镜像的意思,但是 mirrors 是复数,表示里边可以包含多个镜像,他给了一个例子,但是注掉了,你改的话就参考这个例子来改就可以,我把它 copy 一下,粘贴过来,需要加以修改。

配置仓库其实主要就是配一个网址,阿里云的 Maven 仓库的网址是多少,咱们可以搜一下,其实很好记。搜一下,它叫 Maven.aliyun.com,其实它有很多镜像仓库,其中 central 是中央仓库的镜像,我们要用的就是这个路径,可以复制一下。

当然当你点这个仓库以后,它底下会显示出仓库的资源来,就是一个文件夹在阿里云上,你可以展开,它里面有很多子目录,里边包含了很多 Jar 包,我们下载这个包就从这下载好,我们就不细看了。

我回到刚才的配置文件,主要是把路径改成阿里云的路径 copy 的, ID name 也改一改。

mirrorOf 就是说它是谁的,它是中央库的镜像仓库,所以说写清楚一点,以免有歧义,写上 central。

还有这个是仓库的一个名字,你给它取个名字,我取名叫阿里云。这样的话,镜像仓库就配置好了,配置好以后,我们就可以用了。

Maven 我们默认需要采用命令行的方式去访问它的,要用它的命令行工具,你要使用的是 bin 目录下的,Maven.cmd,你可以打开命令行,CD 到目录下来用工具。当然如果为了方便,我们也可以把 bin 路径配到环境变量里,这样的话我们随时随地不用 CD 就可以访问了。我配置一下环境变量这样方便一点。在这个环境变量 path 里,新建加一条这个目录就可以了。好这样的话我只要打开命令行工具,我在任意的路径下都可以访问那个工具。好,我们试一下看看命令的安装的好不好用,敲一个最简单的命令检查没文的版本, mvn-v,他打出了版本是 3.6.1,没有问题就安装好了。

安装好以后,下面我给大家演示一下 Maven 常用的命令。就演示几个,因为 Maven 的命令很多,其他的没有演示的,一个是我们用的相对少一点,再一个的话其实我们在这个工作当中一般也不直接敲命令,我们后面会用这个 IDEA 来集成 Maven,到时候有了那个工具我们就可以点按钮了,但是这个命令你最好有个了解,这是对 Maven 的一个本质的认识,这还是有必要的。

关于 Maven 的命令,我们可以从刚才官网上找到它的一些介绍,非常详细,我们再去看一下官网,我们看左侧它有一个目录叫 user centre,就是用户中心,我们点进去看,这里包含什么? Maven in 5 minutes,就是 5 分钟,你就能学会基本的使用,getting started get,就开始正式的使用,没有更详细的介绍。

后面的话还有一些专项的讲解,包括仓库包括配置,反正这个内容挺多的,我就不挨个给大家。你看他这有介绍,安装完以后我们怎么去看版本,刚才我敲的命令输出的内容是这样的,格式他也给你列出来了。

好,我刚才说了,Maven 能帮我们创建项目、编译项目,测试项目等等,我就把怎么创建怎么编译,怎么测试给大家演示一下,至于其他的什么生成文档等等,类似的命令就是一个单词,那些如果你有兴趣自己看一看手册。

好,首先创建一个项目,就这句话比较长,但是好我们在这能 Copy 一下,我再回到命令行。我在执行命令之前我需要先 CD 到某一个目录下,你想把创建的项目放到就 CD 到哪,这样我想把这个项目放到放到 d 盘 work space 的下面。我要把项目放到这里来,好我就 CD 到目录下,我先去 d 盘, CD 到 d 盘 work work space。好,我把刚才的命令拷贝过来,右键就可以了,这个命令就是大部分地方都不用动,但是有一部分的地方需要我们去改,我来给你讲解一下。

首先 Maven 命令都是以 mvn 开头,没什么好说的:

  • archetype:generate 意思是我要以模板原型的方式去生成一个文件。
  • -DgroupId 就是组织 ID,通常我们写公司域名的倒叙。这里我要改一下,我要把它改成 com.nowcoder,他建议后面写上你的项目的名。因为我们现在做的是一个小的示例,我就不写正式的项目名了,我随便取个名叫 Mavendemo01.
  • -DartifactId 是项目的 ID,我也得重新改一下,Mavendemo01。
  • -DarchetypeArtifactId 是说你要使用的生成项目的模板的 ID 是多少?这里写的是 Maven-archetype-quickstart,quick start 是这个模板。
  • -DarchetypeVersion,word 版本是 1.4,这是官方的推荐的,我们不用动。
  • -DinteractiveMode=false。这个是问你是否启用交互模式,我们写 false 不启用,如果启用交互模式的话,它每执行一步就会问你是和否,这有点麻烦,直接取消了这些参数,因为都已经设置好了,就不用交互了,就可以执行了。

回车执行以后,Maven 工具就会去检查你的本地仓库,看有没有东西,一看肯定没有,它就会访问远程仓库,去下载资源,你看他访问的都是阿里云对吧?这说明我们刚才配置的镜像仓库是有效的。

你第一次使用 Maven 的话,这个会比较慢,因为他要去远程仓库下载一大堆的东西,你需要耐心,等一会儿不要着急,好,我就等一会儿结束了,最后它提示你 build success 成功了。

好我们看一下,你看 work space 的下面确实有这样一个项目,这个项目叫 Mavendemo01。一进去看有一个 pom 文件,将来我们要很频繁的使用它,但现在我先不细说了,有一个 src 的目录进去看,有 main test,main 下放的是正式的代码,test 下放的是测试的代码,在开发时,我们把正式代码测试代码分开写好,将来我们部署项目上线项目的时候,测试代码就会被抛弃。

main 下有 java/com/nowoder/Mavendemo01,默认给我带了一个类,非常简单。看一下,就一个输出一个 hello word,非常就是初级的代码,不说了。回退到 src 目录下,还有 test 下有 java/com/nowoder/Mavendemo01,Jar 包和刚才面一下一样,里边有一个类 AppTest。也看一下,它是基于 Junit 类的测试的,默认带了一个方法,这个方法是用断言的方式去判断参数是否为数。如果是真的话,他不会做任何的行为,就没有任何的事情发生;如果是 false 他就会抛异常,这显然就不会抛异常,就是没有问题。

好,看完以后说明我们这个项目就是生成的没有问题。我再给你看一下我那个 jar 目录,家目录我的 c 盘用户 Administrator,这回你看到了.m2, repository 仓库,本地仓库,这里边就有一大堆东西,那就是 Maven 自动从远程仓库下载的资源在这里。

好了,我们再看官方的手册,他后面也给列出来了,说这个项目结构应该是什么样子,你看这个也可以。好了,接下来项目建好了以后,我再给你演示其他的命令,我就不看手册了,你课后自己慢慢看,因为比较长。接下来给你演示一下我怎么把这个项目编译,因为你刚才看了那个项目里它只有 Java 文件,就两个,一个正式,一个是测试的类,但是没有 class 文件,你要想运行还运行不起来,所以我们需要对项目进行编译。

你要编译哪个项目,你要 CD 到那个项目的目录下,CD 到这儿来,就 CD 到带有 pom.xml 这个文件的目录下,好我就 CD 到 Mavendemo01 里面,我要想编译项目非常简单,一个命令 Maven,compile。回车,需要一点点时间,因为在编译的过程中它也需要一些插件,它又需要一些包,又会去下载,因为本地仓库还是没有。不过第二次就好了,因为第二次他已经下载过了,这已经成功了,我们看一下目录多了一个 target 编译的结果都会放到 target 下,这里面我们主要是看 class 里边就是编译好的,有人会想怎么没有 test class,这两个不用看。这两个文件夹是它编译的过程中自身依赖的资源,这个 classes 是我们需要的东西,因为我们只是编译,并没有要求测试,所以他没有去把测试类进行编译,是这样的。

好了,接下来比如说我要想重新编译一下,我可以这样写,Maven 我先 clean 一下,把刚才的内容删掉,clean 是删除清除,你看 target 就没了,我再重新编译。好,再看就又有了,clean 命令它可以和编译命令就是混合在一起用,你可以这样写 Maven 题。clean compile 意思是我要先清理再编译好,再执行一遍,也是 ok 的。好,比如说现在我不只是要编译,我还要进行一个测试,就是编译好以后,让它自动跑一下,测试的代码你可以这样 MavenClean 清理完以后 test 测试。

好,他又需要下载一些包,因为做测试这件事需要依赖一些资源,好,我们稍微等待一下。还挺快的,成功了他说 Run,一个方法失败了,0 出错了,0 忽略了 0 你就成功了,Run 的是谁?是这个 APP test。

大家注意我刚才执行的命令是 test,其实 test 命令它是包含了 compile,因为你想我是先清理了,target 就没了,我 test 他一定得是先编译好再测试对吧?所以其实 test 它是包含了编译,所以它可能面临的是有一个包含的关系。

好,我们看一下目录,target 那里边就多了一个 test classes,这里面就是它编译好的测试的程序。好,这个 Maven 它基本的使用就是这样,当然它还有其他的命令,大家可以自己参考官方的手册去做更多的了解。Maven 装好以后,下面我们再去装一下集成开发工具 IntelliJ IDEA,还是先说两句。

IntelliJ IDEA 它是目前最流行的,开发 Java 的集成开发工具,基本上大部分的互联网公司都在用。安装就比较容易了,一个软件,我不说废话,直接给你演示怎么去装,这个网址是 IDEA 的官网,我点进去看,好稍等一下,略微有一点点慢。

好来到官网以后我要下载,所以说点这个 download,它有两个版本,一个是专业版,一个是社区版,专业版你可以免费试用,但是最终是要收费的,是按年收费,好像不便宜。我们用社区版免费的就可以免费开源的,这个也足够我们用了,你点下载就可以了,我已经下载好了,我就不点了。

我给你看一下我下载好的程序,就是它 exe 文件。

好,下面我就给大家装一下,点击 exe,下一步换一个安装目录你不换反正也行,我换一下我换到 d 盘,还是放到 work 之下。好,下一步稍微有点卡顿稍微等一下有点慢,这个界面你需要选一下多少位?我的系统是 64 位,所以我选 64。其他的就不需要动,下一步直接点安装就可以了,好,这个过程稍微有点慢,咱们等一会儿,好终于安装完了,我就点击完成就可以了,我打开一下 IDEA,咱们看一下,它会生成一个图标在桌面上双击打开。

好,打开的时候,他会问你要不要做一下配置什么的,好我就不做,不要导入配置,我就不导入了,选这个 Ok。 Ok 以后它会让你选择皮肤是白的还是经典的,其实一般我们在工作的时候大家都愿意用黑的,就是你一天工作时间久了,黑色还是比相对来说比较护眼。我就用我们常用的方式,下一步是否选择安装插件,我就不安装了,好开始使用 IDEA 就行了,它就会进入到这样一个界面,在这个界面你可以选择创建一个新项目,或者是导入一个项目,或者是打开一个项目,导入和打开的区别是什么?

如果我是用之前用 IDEA 创建了过一个项目,我这个 IDEA 就会直接打开它。

如果我已经有了一个用 Eclipse 创建的项目,我需要导入把它转成 IDEA 的项目,是这样的一个关系,这里还可以做一些比如设置这个字号设置 Maven 我先做一个设置就点 settings,我要设置一下字号,不然的话字太小,你们看不清楚,设置字号在 Editor 下面,有一个 Font,当然你也可以在这搜 Font,这个字体默认我不太喜欢,我换成我喜欢的字体,字号调成 16 稍微大一点,你们自己根据自己的情况去选。

另外我还要设置一下,配置一下 Maven,因为我们在开发使用 IDEA 去写代码,写完代码以后怎么去编译对吧?怎么去测试,其实也是用 IDEA 的,不用去命令行求命令。IDEA 可以帮我们去调用 Maven 的命令,前提是你要告诉他 Maven 装在哪。好,那我就选一下 build 构建的工具, build tools。Maven 第一个,我们需要做的是你要选择你安装的 Maven 的路径,我装在 d 盘 work/Apache/Maven。

Ok,另外你要指定你自定义的 Maven 配置文件,因为配置文件里我们不是改了阿里云吗?对吧?不然的话他就会用默认的,我们还是要指定就这块 Override 用户的配置文件,我们选一下我们自己的 d 盘,work/Apache/Maven/conf/settings.xml。这个是本地仓库的位置,默认就是.m2,没有问题。Ok,IDEA 我就配置好了,配置好以后,接下来我们就可以利用它创建一个新的项目,点 create new project,左侧选择项目类型,我们还是要创建 Maven 项目,所以我选择 Maven。右侧的上方你要选择 JDK,它是默认选好了。

如果你没有默认选好的话,你就点这个按钮在弹出框里选择你 JDK 安装的位置,点 create from archetype,我要用这个模板来创建 Maven 项目,还是利用刚才 Maven 的官方的模板,下一步这里要填 group ID,公司域名的倒叙,com.nowcoder,后面最好带上你的应用名,我这个项目叫 Mavendemo02,下面写的是项目 ID,Mavendemo02,是版本号默认 1.0 就可以,下一步这,让你确认是不是用的正确的 Maven 配置文件,以及这些配置信息这些没有问题。

再下一步,这儿我要填的是这个项目的名称,它默认就是跟 ID 一样也没有问题,让你选择这个项目存放的位置,我要重新选一下,我要把它放到 work space 的下面,建一个文件夹和项目同名,Mavendemo02,好到这就可以了,点击完成好,你最好点一下 enable output import 允许它自动引入一些资源,把它最大化一下。

好,这个项目就创建好了,创建好以后我们可以左侧展开这个项目,看一下它的结构,根目录下也是有 pom.xml src 的下面也有 main 和 test,main 和 test 下面也有包以及自带的类, 和我们刚才直接使用 Maven 的工具命令行创建项目,是一样的。

好,在 IDEA 工具下我们怎么去编译这个项目呢?因为你看现在他还没有 target,那也很简单,右侧有一个 Maven 的这么一个标签你展开,把这个展开,这里边有他全部的命令,比如说你要清理点口令,比如说你要编译就点 compile 双击一下,好很快的就编译好了,target 就有了。

当然如果你要测试你就点 test,它会重新的进行编译,并且进行一个测试。

好,你看这是测试结果,它打印到了控制台也没有问题,其实我在实际的开发时,一般不太愿意点这个地方,因为稍微有点麻烦,还得展开。还有一个更简便的方式,你可以点 Build 构建, build project 构建项目。点完以后它就会重新的进行编译,当然它的快捷键是 CTRL f9,所以说我们平时写代码的时候要重新编译,就按一下快捷键就比较方便。

好,如果说你想单独执行某一个类的方法也是可以的,比如说我打开 APP 类,我要运行 main 方法,那就和我们学学基本的 Java 没什么区别,右键软面方法,输出结果,hello word 没有问题, APP test,比如说它这里会有很多测试方法,我只想执行这一个,你就选中这一个方法,右键,结果是正确的,它勾就表示正确的,没有报错,就表示测试通过了。

好了,这就是这个 IDEA 它最基本的使用的方式。

好,我们再回到 PPT,看下一项内容,接下来我再给大家演示一下怎么去使用 Spring Initializr 来创建一个 Spring Jar 包的项目,有人可能会奇怪,为什么要用这个工具呢?不是说好了 Maven。是这样的,就是说 Maven 虽然说已经能帮我们解决很多问题了,但是他还有优化的空间,或者说它还有能更方便的一个空间,就是说我们用 Maven 去管理包,尽管很方便,但是包太多的时候也会有麻烦,因为你想我们最终项目 160 多个包,如果说你都用 Maven 去管理的话,你都需要通过 Maven 的官方去搜索这些包,去下载这些包,我们通过 Maven 怎么去搜这个包,我给你演示一下。

我们搜 Maven 的包,其实你可以通过阿里云的仓库,这儿有这个社区,比如说你要做 MySQL 的开发,你可以搜 MySQL,回车,它这里有很多结果,但是哪个好,哪个不好以及常不常用看不出来,这是阿里云的搜索的一个缺点,我更喜欢用的是另外的一个网站, mvnrepository.com。

好,我们也可以在这个网站去搜索 Maven 仓库里的资源,比如说我搜 MySQL,回车。他会有建议,它是按照使用的数量排名的,显然用的是最多,所以说我们现在它应该是比较合适,所以基于这种情况我们会用来搜,但是你想一个项目有多个包,如果说你挨个包去这么搜一下,再去把它下载过来多麻烦,当然如果你要下载这个包怎么下载你就点进去。

选择一个版本最新的,这段代码拷贝一下,复制到我们的项目的 pom 文件里,把它放到 dependencies 之下,比如说这个位置就可以了。你只要一保存,Maven 根据配置就会自动的下载包,但是包太多了,你这样做还是很麻烦。

好,再回到我们的正题,我们使用 Spring Initializr 工具就能很好地解决这个问题,他是怎么解决的?他是把这些包, 把我们平时开发的这些包做了一个整合,按照功能, 按照需求进行了划分归类,比如说我要做 Web 开发,我就输入 Web,或者说我搜索一下 Web,我引入 Web 相关的包,它是引入一批包,利用这个工具,总之我要做哪个方面的开发,我只要把相关的功能搜一下,我就能把这一方面相关的几十个包一下都引进来,所以说这是他对包做的整合,当然它的底层还是基于 Maven。

好了,我接下来给大家演示一下,我们利用这个工具可以通过这个网站来使用,点一下这个网址。

好,你看首先它的项目默认就是 Maven 项目,语言就是 Java,项目的版本默认选 2.1.5,2.1.5 是正式的版本,像其他的带有这种标记的,它是非正式的版本,所以我们就用 2.1.5,你要输入项目的 Group 和 ID, com.nowcoder,这回我取一个正式的名字,我们后面的开发就基于这个项目,com.nowcoder.community,就是社区的意思,牛客社区。好,项目的 ID community,还有更多的配置,项目名肯定 M 没问题。

项目的描述我就写一下 nowcoder community,就这样。

好,这儿按理来说还是我们开发 Web 项目,所以应该是 War 包,但是 Spring Jar 包工具它就这个框架比较神奇,我们选择 Jar 包也可以运行起来。

好,至于说选择 War 包怎么做,将来我们在后期讲就项目开发的差不多了,我们去部署的时候,我也会给你演示。但我们现在用这种简单的方式,最后选择 Java 语言的版本,我最新的是 12 我就选 12,你根据自己的实际情况去进行选择就可以,比如说你用的是 9,在这里没有你就选 8 就可以。

好,我想开发这个项目,我想开发哪些功能,我在这儿去搜。当然了这需要你基于对 Spring 有一个了解,你目前不了解,那就照着我这个操作去做。

我们在开发的过程中需要用到 Spring 的一个很核心的功能,aop 我们后面会重点讲,所以搜 aop,就是它点一下表示说我一会重建项目时会带上功能相关的包,我要做 Web 开发,搜 Web,我还要用到模板引擎来生成页面,搜一下 Thymeleaf,用它最后再来一个 dev tools,这是开发者工具。

我们在开发的过程中有这个工具就会很方便,比如说我代码改了,我需要重新启动服务器,有了这个工具,我们就不用手点去重新启动服务器,它会自动重启。

当然我们项目中不只是用这几个包,还有别的几类,后面我们用到时再说我们先导这几类。你看我只要输入 4 个单词,其实它背后就是几十个包就有了。

好,输入完以后我就点生成项目, generate the project。好,找到它所存放的位置,得到了生成了项目以后,我就把它解压缩到某一个目录下,解压缩一下,我把它放到 d 盘 work space 下面确定。

好我去看一下,有了,我就回到我的 IDEA 开发工具,我要用开发工具去开发它,所以说我要打开那个项目,这个项目我们只是刚才的一个简单的演示就不再使用了,所以我就点这个 file,点 open,打开就可以。

d 盘 work space community。

他问你说是在一个新的界面打开,还是在当前窗口打开,那就得在新界面打开,当前的还保留,在当前窗口打开它会被覆盖掉,因为这个不用了我就覆盖掉。那打开以后它会去下载一些 Jar 包一些资源,这需要一点时间,这个项目才能够变得完整,我们稍微等待一下。

好了,这个包已经下载好了,这个项目也已经生成了,你注意这个项目和刚才的项目就有区别了,因为它不是一个最基本的普通的项目,它可是一个 Web 项目,所以说它的结构略有不同,你看它默认有这个账号目录,里边有我们建的包,这个包下有自带的一个类,这个类里边的代码,就和我们刚才 demo 就不一样。

还有一个 resource,文件夹,这个文件夹之下存放的是配置文件以及一些静态资源,包括我们要用的网页模板,包括我们网页所依赖的图片样式, js 都可以放到这里面来,这以后会详细的讲。这个是配置文件以后也会详细的说明, test 目录下也有一个类生成,他带了一个空的测试方法。

好,当然它还有一些注解,这些细节我们这课这次课先不详细说了,因为我们这次课主要是把环境安装好,把示例调通,表示我环境可用,具体的说这句话什么意思?注解是怎么回事,我们会在后面的课程里面进行详细的讲解。

好,这是一个 Web 项目,我怎么去运行它呢?其实和刚才我们运行 demo 一样,就运行 main 方法我就运行一下是吧?它会进行编译,启动这回运行和刚才的结果不一样,刚才我们运行的是 Maven demo,它只是打印了简单的一句话,但你这次运行你看它打印的内容很多,包括一个 Spring 的图标,这个叫 banner,包括一些信息,这个信息你仔细看有一个很关键的提示他说 Tomcat started on part8080。

就是说 Tomcat 以 8080 端口启动成功了,而且这个程序没有终止,你看这是停止的意思就关掉程序的意思,stop 的意思,但它没有变灰,表示说它一直在运行着,所以说我们运行这个方法它底层做了什么,它底层自动帮我们启动了 Tomcat 应用服务器,好,有人说你没装应用服务器,你注意 Spring Jar 包它有一个好处是,他带 Jar 包里会带有一个 Tomcat, Spring Jar 包它是以 Jar 包的方式内嵌了一个 Tomcat,我们启动就是内嵌的 Tomcat,那少装一个工具,这样不是更方便吗?如果你想知道 Tomcat 在哪,你可以在这看一下他最终所依赖的,或者说他所下载的所有的包你看有几十个,可我们引入的时候只写了几个单词而已,对吧?

所以说这就是 Spring 的他的优势了,很方便,这里边你去找你看 Tomcat 什么就这几个包内嵌的 Tomcat 好了,服务器启动了,我们通过浏览器就可以访问,因为服务器就是为浏览器提供这个服务的。好,我打开浏览器访问一下,这个服务,服务器它的端口是 8080。好,我就输入 localhost:8080 回车,给我这样一个页面, whitelabel error page,就是一个空白的错误页面。

为什么是这样一个结果?因为你不用细想也知道,我们的项目中默认什么都没有,没办法给浏览器提供任何的服务,没有办法给浏览器返回任何的网页,对吧?所以说他不知道能给你返回什么,因此返回一个错误的提示,啥都没有,只要我们写一些代码,能够为了哪些返回数据,浏览器就能得到正确的结果。

但是当你看到这个页面的时候,表明说我们这个服务器确实在工作,如果说服务器没工作,它是不会返回这样的文字的网页。

好了,所以说我们这一步利用 Spring Initializer 创建一个 Spring 的项目,这个环节其实就已经成功了。好,我们再进入下一个环节,也是我们在的最后一个环节。我们开发一个最简单的入门实例 Spring Boot 入门实例。好,让我们这个程序能够正常的跑起来。什么示例?就是说当我访问服务器的某一个路径的时候,它能够给我返回一句话就行。

Hello Spring 就可以表示说我这个东西确实通了。

好,在写这个例子之前,我先对 Spring 再做一个简单的介绍,Spring Jar 包它的核心的价值就在于什么?三点,第一个它能够给我们的项目提供起步的依赖,什么叫起步的依赖?刚才我们创建项目是不是搜索了 Web,Aop 对吧?

搜索的东西就叫起步依赖,就是少量的依赖,其实就能够依赖很多个包,这个依赖体现在哪里?我们打开这个项目看一下,pom.xml,在 dependencies 之下,依赖的这就是我们搜索之后它依赖的包 spring-boot-starter-aop。spring-boot-starter-thymeleaf。spring-boot-starter-web Jar 包。devtools。好,它都叫什么?Starter,这个就叫起步依赖。这个依赖它依赖的不是一个包,而是一堆包。

你比如说以 Web 为例,你可以 CTRL 点它进去,这是他底层的文件,我们看他实际的 dependence 有很多个,就每一个 dependency,每一个 dependency 就是依赖的一个包,你看它依赖的其实很多个包,而且有的包也叫什么 start 也是一个组合,所以它是通过这样的方式让我们只需要写出这么一段话,就依赖了一大堆包,其实它是对一堆包的组合,这个就叫起步依赖,让我们构建这个项目依赖包方便好。

第二个它的核心的作用是在于它能够做自动的配置,如果你不用 Spring Jar 包,你需要配置很多的内容,很多的配置文件,你要想启动 Web 项目,你要想使用 Spring 框架,你要做很多配置,但是我们利用 Spring 几乎不用做配置,我们就可以把服务启动起来。

好,第三个作用是断点监控,就是说当我们项目上线以后,我们项目运行的状况是否良好,我们可以对它做一些监视,它是不能够对这个功能提供支持。

好的,断点监控是我们以后要探讨的话题,因为这是项目开发完以后上线以后的事,我们在最后一章再进行一个详细的讲解,先不说了好了,大致了解了 Spring Jar 包的核心价值,也了解了我们要做什么。

下面我就给你演示一下这个例子,因为是第一次写 Spring Boot 项目的例子,所以说我们设计的比较简单,也就十几行代码,好,我要现在要想提供一个功能,在服务端提供一个功能,可以被浏览器访问到,能够给浏览器返回一个简短的问候,怎么办?这样来做。

首先我先建个包,这个包 controller 代表什么含义,以后再说。controller 之下新建一个类,这个类只是一个示例,不是我们正式项目的代码,但是我也放到这个项目下,只是一个小例子,我给它取名叫 AlphaController,类上需要写一个注解,controller 还要再写一个注解,这两个注解它是 Spring MVC 的注解,我们将来学 Spring MVC 我还会进行详细的介绍,我们现在先这么写,我写的 /alpha 是个啥意思?

我是给类取一个访问的,因为你要给浏览器提供一个服务,浏览器能够访问你,能够访问这个类里面的某个方法,它怎么访问这个类呢?

通过这个名字来访这个类,所以需要取给它取一个访问名,在这个类当中我还要写一个能够给浏览器提供服务的方法,好,或者说能够处理浏览器的请求的方法,这个方法我们先这样写,他返回一个字符串,咱们先返回一点简单的数据,方法名我叫 sayHello,我直接就推一个字符串, hello,Spring 就完了。

这个方法能够被浏览器访问到的前提是它前面也要写这样的注解,给这个方法也取一个访问路径,我叫 hello。另外这个方法,如果你这样写,浏览器会认为它会返回一个是网页,但我们返回的不是网页,那只是返回普通的字符串,还需要加一个注解进行声明,当然注解也是以后详细讲,先写到这种程度。

好,写完以后咱们再试一下。

因为刚才我他们开的已经启动了,因为我加了新的代码,我需要重新编译,重新启动,你可以点这个按钮重新启动,在启动之前它会重新编译,或者你也可以直接按 build project 或者 CTRL f9,它就会自动重新编译,你看它已经重新编译了,自动重启了,自动编译以后自动重启,这是 dev tools 的作用。

我就打开浏览器,我再访问一下 8080,我要访刚创建出来那个类,它的访问路径是 /alpha,访问这个类之下的 sayHello 方法,它的路径是 hello 成功了。

你看我浏览器访问的服务器,服务器给我返回了我想要的一句话,所以说你看我们用 Spring Jar 包去构建项目,去开发一个前后端能够交互的功能,居然是这样的简单,所以说这是 Spring Boot 项目的优势非常的方便。

好了,到这我还想多说两句,当你开发完以后,说我想不用这个服务了,你要把服务关掉,不用的时候把它关掉,点按钮就是关闭 Tomcat, Tomcat 启动的时候,它默认的端口号是 8080,有些同学可能自己电脑上事先安装过别的软件,端口恰恰是 8080 产生了冲突,这个时候你要么去改软件的端口,要么是改 Tomcat 的端口。

我们就介绍一下如何改 Tomcat 的端口。我们想修改服务器端口非常简单,去改 application.properties 配置文件。

好,当然配置文件就是为什么这样写,我以后也会详细讲。

咱先这样写着,我要改服务器端口就写 server 点 part 所有的端口等于 8080,当然你可以改成任意的 8081、8082、8088,就随便。我还是把它改成 8080,通常我们可能还会给这个项目取一个访问路径,我给它取一个 server.servlet.context-path 等于我希望这个项目的访问路径是这样的,community 配置完以后,我再重新的启动服务点按钮就行了,当然你也可以在这儿右键,run,或者是在这儿选中某一个类点 run。

好,就启动好了,启动好以后它的端口还是 8080,我没有具体的变,你可以把它改成任意的值,这都无所谓。

打开浏览器,你这回不能这样访问了,因为我给项目加了一级路径,所以你要 8080 之后你要访问 community,项目之下再访问 controler 以及它的方法,回车,这个结果依然是正确的。

好了,通过这个例子,我们就初步的体会了 Spring,我们是怎么利用它去开发项目的这种感觉,有了点感觉。通过这小例子,你也能知道你的环境搭建的是 ok 的,我们这次课的目的就达到了。好了,这次课我们就进行到这里,咱们下次课程再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)

从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1) 段子手168 1、微服务的注册中心 注册中心可以说是微服务架构中的”通讯录”,它记录了服务和服务地址的映射关系。 在分布式架构中服务会注册到这里&am…

美易官方:美债美元黄金继续涨?

全球金融市场波动加剧,投资者对避险资产的需求不断升温。在这一背景下,“投行老将”们纷纷发表观点,认为避险情绪尚未结束,美债、美元和黄金等避险资产有望继续上涨。 巴克莱一位资深投资银行家表示,由于担心中东冲突升…

在Linux系统中搜索当前路径及其子目录下所有PDF文件中是否包含特定字符串

目录标题 方法一:pdfgrep方法二:使用find和xargs与pdftotext(将PDF转换为文本)组合,然后用grep搜索 方法一:pdfgrep pdfgrep -ri "rockchip" .方法二:使用find和xargs与pdftotext&am…

动手学深度学习11 权重衰退

动手学深度学习11 权重衰退 1. 权重衰退2. 代码实现3. QA 视频: https://www.bilibili.com/video/BV1UK4y1o7dy/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 电子书: ttps://zh-v2.d2l.ai/chapter_multilayer-perceptrons/wei…

Mamba 学习

Vision Mamba U-Mamba 以后的趋势: 1.Mamba模型机机制上和transform一样,但是参数量上做了改进,可以直接替代 2.vision上可以实时处理

视频太大怎么压缩变小?8种方法随时压缩视频大小

视频太大怎么压缩变小?视频压缩方式分为两种,有损压缩和无损压缩,什么是有损什么是无损压缩,什么时候视频用无损压缩更好?什么时候用有损压缩更好?如何调整视频参数实现基本无损压缩? 今天就借助…

小红书笔记写作方法和技巧分享,纯干货!

很多小伙伴感叹小红书笔记流量就是一个玄学,有时精心撰写的笔记却没有人看,自己随便写的笔记却轻轻松松上热门。实际上你还是欠点火候,小红书笔记写作是有一套方法和技巧的,总归是有套路的,如果你不知道,请…

数仓建模—物理数据模型

文章目录 数仓建模—物理数据模型什么是物理数据模型物理数据模型示例如何构建物理数据模型物理数据模型与逻辑数据模型逻辑模型和物理模型之间有什么关系逻辑数据模型的好处物理数据模型的好处数仓建模—物理数据模型 前面我们讲了数据模型和逻辑数据模型,你可以参考前面的文…

【JAVA进阶篇教学】第四篇:JDK8中函数式接口

博主打算从0-1讲解下java进阶篇教学,今天教学第四篇:JDK8中函数式接口。 在 Java 8 中,函数式接口是指只包含一个抽象方法的接口。这种接口可以用作 Lambda 表达式的类型,从而使得函数式编程在 Java 中变得更加方便和灵活。下面…

【题解】NC398 腐烂的苹果(多源BFS)

https://www.nowcoder.com/practice/54ab9865ce7a45968b126d6968a77f34?tpId196&tqId40529&ru/exam/oj 从每个腐烂的苹果开始使用广度优先遍历&#xff08;bfs&#xff09; class Solution {int n, m;int dx[4] {0, 0, 1, -1};int dy[4] {1, -1, 0, 0};vector<v…

C++ STL 容器 deque

目录 1. deque 对象1.1 内部表示1.2 底层数据结构1.3 分段连续1.4 重新分配 2. deque 迭代器 本文测试环境 gcc 13.1 1. deque 对象 1.1 内部表示 deque 为我们提供了一个双端队列&#xff0c;即可以在队头进行 push、pop&#xff0c;可以在队尾进行 push、pop deque 容器擅…

电弧的产生机理

目录&#xff1a; 1、起弧机理 2、电弧特点 3、电弧放电特点 4、实际意义 1&#xff09;电力开关装置 2&#xff09;保险丝 1、起弧机理 电弧的本质是一种气体放电现象&#xff0c;可以理解为绝缘情况下产生的高强度瞬时电流。起弧效果如下图所示&#xff1a; 在电场的…

pyplot+pandas实现操作excel及画图

1、安装jupyter lab pip install jupyterlab # 启动 建议在指定的项目文件夹下 开启cmd窗口并执行 jupyter lab 启动后会自动打开浏览器访问 2、安装依赖 pip install matplotlib pip install xlrd pip install pandas 3、读取excel import pandas as pddf pd.read_excel(hi…

一文带你了解什么是国际短信

什么是国际短信&#xff1f; 国际短信&#xff0c;也叫国际短消息&#xff0c;是指中国大陆以外的国家或地区运营商与用户之间发送和接收短信息的业务&#xff0c;是一种实现国际间沟通交流与信息触达的便捷方式&#xff0c;可广泛应用于出海游戏、跨境电商、在线社交、实体零…

「探索C语言内存:动态内存管理解析」

&#x1f320;先赞后看&#xff0c;不足指正!&#x1f320; &#x1f388;这将对我有很大的帮助&#xff01;&#x1f388; &#x1f4dd;所属专栏&#xff1a;C语言知识 &#x1f4dd;阿哇旭的主页&#xff1a;Awas-Home page 目录 引言 1. 静态内存 2. 动态内存 2.1 动态内…

比特币上最有价值的BRC-20,你了解吗?

BRC20 是比特币网络上发行同质化Token 的实验性格式标准&#xff0c;由domodata 于2023 年3 月8 日基于 Ordinal 协议创建。 类似于以太坊的 ERC20 标准&#xff0c;它规定了以太坊上发行 Token 的名称、发行量、转账等功能&#xff0c;所有基于以太坊开发的 Token 合约都遵守这…

计算机视觉——DiffYOLO 改进YOLO与扩散模型的抗噪声目标检测

概述 物体检测技术在图像处理和计算机视觉中发挥着重要作用。其中&#xff0c;YOLO 系列等型号因其高性能和高效率而备受关注。然而&#xff0c;在现实生活中&#xff0c;并非所有数据都是高质量的。在低质量数据集中&#xff0c;更难准确检测物体。为了解决这个问题&#xff…

axios 请求中断和请求重试

请求中断​ 请求已经发出去了&#xff0c;如何取消掉这个已经发出去的请求&#xff1f; 微信扫码体验一下 &#xff08;说不定哪天你就用得上&#xff09; 用途&#xff1a; 比如取消正在下载中的文件点击不同的下拉框选项&#xff0c;向服务器发送新请求但携带不同的参数&…

解决系统报错:此应用无法在你的电脑上运行

在开发过程中不知从何时起&#xff0c;使用电脑时过程中不断的都显示“此应用无法在你的电脑上运行”&#xff0c;让人非常恶心&#xff0c;一直以为是系统误操作了什么或误安了软件 百度的答案就是让你找到报错的软件用兼容模式运行。而我连报错的软件都不知道&#xff0c;让人…

盲人盲杖:科技革新,助力视障人士独立出行

在我们的社会中&#xff0c;盲人朋友们以其坚韧的精神风貌&#xff0c;生动诠释着生活的多样与可能。然而&#xff0c;当我们聚焦于他们的日常出行&#xff0c;那些普通人视为寻常的街道、路口&#xff0c;却成为他们必须面对的严峻挑战。如何切实提升盲人盲杖的功能&#xff0…
最新文章