Spring全家桶学习笔记 03 | 编写第一个Spring程序

理解了IoC与DI,我们就可以着手编写第一个Spring程序了。

本章目录

  • 如何通过spring.io创建基础骨架

  • 骨架的基本结构

  • 运行项目

  • 简单的分析pom.xml

  • 一些疑问解答

生成骨架

  • 首先访问 https://start.spring.io/ ,这是spring官方的骨架生成器网站Spring Initializr
生成Spring骨架
  • 选择Maven工程
  • Spring Boot使用默认的2.1.6版本
  • Artifact属性就是生成的项目名称
  • Dependencies方面选择Web支持与Actuator。

打开项目

  • IDE选择IntelliJ IDEA,打开项目后的目录结构如下
项目目录结构
  • 其中HelloSpringApplication类是带有SpringBootApplication注解的入口程序
入口程序
  • application.properties则是spring自动生成的一个空的配置文件。

  • 接着我们编辑HelloSpringApplication

    HelloSpringApplication

    添加@RestController注解,同时新增一个简单的hello接口。编辑之后即可运行程序

运行项目

项目成功运行之后,我们可以再IDEA的run窗口看到Spring Boot内置的Tomcat已经跑在了本机的8080端口上

8080端口
  • 打开IDEA的Terminal窗口,或是自行打开cmd切换至本项目的路径

    hello接口
  • 回车之后就能看到接口返回的字符串了

    返回的字符串

好了,至此我们的项目已经是一个完整的服务器应用了,那么我们在创建过程中总共做了哪些工作呢?

  • 利用骨架生成器生成Spring Boot骨架项目

  • 用IDEA打开项目,自动下载依赖包等

  • 添加@RestController控制器注解,写了一个极为简单的接口。

一个Spring Boot项目从无到有只需这3步,这就是Spring Boot的魅力所在了。

那先前与web模块一同添加进项目的Actuator用意何在呢?

Spring Boot Actuator是spring boot项目一个监控模块,它可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。

  • 下面演示一个简单使用,在Terminal或CMD中输入以下命令:
curl http://localhost:8080/actuator/health

这个内置接口能够告诉我们此时运行的应用程序的状态如何,如果一切正常,则会返回以下结果

health检查

体验了接口之后,你可能会想,Web模块与Actuator模块是我们在利用骨架生成工具时勾选添加的,那么实际上项目是如何添加这几个模块的依赖呢?接下来让我们来揭开项目根目录下pom.xml的面纱。

分析项目

pom.xml是Maven工程的特点,如果你更熟悉Gradle的话,我猜测你在Android领域应该有所建树了,自然也能够快速上手Maven。打开pom.xml文件,就能看到Spring Boot自动生成的内容

pom.xml

其中Spring Boot指定了spring-boot-starter-parent作为我们整个Maven工程的parent,而2.1.6的版本是先前我们在网站上指定的

parent

项目所使用的Java版本由我们指定为了1.8

java版本

以下就是项目的依赖,原来web模块与actuator模块是在此处被引入项目的

dependency

或许你看到这里会很奇怪,为什么这些依赖没有指定版本号呢?那是因为在Spring Boot中我们只需要告诉maven我们需要什么依赖,而其对应的版本号则是由parent管理的。

接下来我们能够看到文件的最后引入了一个plugin,这个plugin的功能就是在我们打包项目的过程中生成一个可执行的jar包,下面来演示一下这个功能

  • 在Terminal中输入以下命令
mvn clean package -Dmaven.test.skip

等待数秒之后,可以看到以下输出信息

打包成功

我们暂时不去深究命令,只需知道它能够打出我们想要的jar包就足够了。此时我们将目光移向项目目录,能够发现src文件夹下新增了一个target文件夹,将其展开就能够看到我们所需的jar包了

target
  • 在Terminal窗口中输入以下命令,进入target路径,运行jar包
运行jar包

数秒之后就能看到我们的应用已经成功跑起来了,这种以java -jar 的方式与直接点击run按钮并无区别。

运行成功

一些疑问

  • 为什么打出的包是jar包而不是war包?

    Spring Boot默认打出的是可执行的Jar包,这个Jar包与普通的jar包结构不同,其中包含所依赖的各种Jar,同时也会有Web容器,因此无需容器就能够直接运行。

  • 为什么不是curl http://localhost:8080/hello-spring/hello ?
    因为这个项目就是发布在ROOT,即直接发布在/的。

到此我们已经写完了第一个Spring应用程序,也成功将它跑了起来,简单两笔就勾绘出了Spring最基础的样子,这就是Spring Boot想要带给我们的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容