前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转 Spring Boot 入门篇(一)

玩转 Spring Boot 入门篇(一)

作者头像
botkenni
发布2022-06-15 19:08:49
5360
发布2022-06-15 19:08:49
举报
文章被收录于专栏:IT码农IT码农

Spring 颠覆了 Java 企业级项目的开发,使得企业级的开发由重变轻、由繁至简,可谓是为 Java 程序员带来了春天。

Spring Boot 是 Spring 框架对“约定优于配置”理念的最佳实践的产物,带来了自动配置、开箱即用、完善的监控体系等诸多特性,着实让你逃离繁琐的 XML 配置,更加专注于业务逻辑开发,可谓是 Java 程序员的又一春。

坊间传闻:由于 Spring Boot 将 Spring 开发的自动化程度提升到了一个新的高度,正式让 Spring 风云再起;由于 Spring Boot 的魔法(自动配置、内嵌容器、应用监控等)降低研发的难度,横扫 Spring 在你成功路上的绊脚石。官方宣称:Spring Boot 开箱即用,绝对没有代码生成,也不需要 XML 配置。

Spring Boot 如此之玄妙?你是否已按捺不住,想要亲自操刀,跃跃欲试?一探究竟?

莫急,先大致了解一下本次分享的内容大纲,然后再磨刀霍霍向 Spring Boot。

10c5b4e19b03955ba9fe9c021278f978.png
10c5b4e19b03955ba9fe9c021278f978.png

1. 磨刀不误砍柴工。

为了后续项目实战的需要,也避免后续因为环境不同而导致的差异化问题,在正式敲开 SpringBoot 大门之前,有必要先统一依赖的研发环境。

JDK 版本:java version "1.8.0_251"

Maven 版本:Apache Maven 3.3.9

Spring Boot 的版本:Spring Boot 2.6.2

开发工具:Intellij IDEA

具体的安装步骤,网上的文章比比皆是,可跟随谷哥或度娘的指示,一步一步傻瓜式的安装操作,相信肯定难不倒你,本文不做赘述。

接下来花一分钟的时间,快速搭建 Spring Boot 项目。

2. 快速敲开 Spring Boot 的大门

2.1. 创建 SpringBoot 项目

创建 Spring Boot 项目的招式(使用 Spring Initializr 、Spring TooI Suite、InteIIiJ IDEA 等)有很多种,切记不要太在意这些招式,挑花拳绣腿练一练。

花拳:用 Spring Initializr 构建 Spring Boot 项目。

浏览器直接访问 https://start.spring.io/ 链接,便可打开 Spring Initializer 的 Web 页面。

6c64a4a17360d0066456f28328152426.png
6c64a4a17360d0066456f28328152426.png

虽然成年人不做选择题,但是此时的确需要做如下两个选择:

选择 Java 的版本:与 JDK 安装版本保持一致,本文的实验环境为 JDK 1.8 ,所以选择 8;

选择 Web 依赖包:为了更好体验 Spring Boot,选择添加 Web 依赖。

然后点击“GENERATE”按钮便可生成一个 Spring Boot 项目的压缩包,克制一下好奇心,待练完绣腿再体验 Spring Boot 到底有多神奇。

绣腿:在 InteIIiJ IDEA 里构建 Spring Boot 项目。

在 Intellij IDEA 界面中,单击【File】→【New】→【Project】,在弹出的窗口中选择【Spring Initializr】选项,如下图所示。

dcaa906734fcbef1479559570099a35c.png
dcaa906734fcbef1479559570099a35c.png

确认 Java Version,本次实验环境选择 Java 8,如下图所示。

3d1db13c5f0f4ba910bfafd4667bb09e.png
3d1db13c5f0f4ba910bfafd4667bb09e.png

选择【Spring Boot Version】,这里按默认版本即可(当前默认版本为 2.6.2),勾选【Web】→【Spring Web】选项,然后单击【Next】按钮,如下图所示。

71309b11270faa54593aac713b155ff0.png
71309b11270faa54593aac713b155ff0.png

点击 Next。

9168bf4ef3ce20bb6a362f24a641eabe.png
9168bf4ef3ce20bb6a362f24a641eabe.png

至此,一个完整的 Spring Boot 项目就创建完成了,但是,如何跑起来呢?

2.2. 运行 Spring Boot 项目

方式一:直接运行 main 函数,例如在 IDEA 里运行效果如下。

d1210134ff2b8ffb49e445bcd122f039.png
d1210134ff2b8ffb49e445bcd122f039.png

方式二:采用 mvnw spring-boot:run 命令执行

进入 Spring Boot 项目的根目录下,直接运行如下命令

./mvnw spring-boot:run

方式三:采用 java -jar 命令运行

此时先对项目进行 maven 编译,打包,然后进入 target 目录,执行如下命令:

# java -jar xxx.jar java -jar demo-0.0.1-SNAPSHOT.jar

538e9e83be99bc1472b459d30f0e7633.png
538e9e83be99bc1472b459d30f0e7633.png

细心的同学会发现控制台日志输出时,会有 Tomcat 以及 8080 端口的身影,这是为什么呢?

这就展现了一点 Spring Boot 的独特魅力,内嵌了 Tomcat 服务器,运行一个 Java main 函数顺带启动了一个应用服务器,简直太神奇了(本次不深入探究,后面原理篇会细谈)。

至此,Spring Boot 项目就跑起来了。

遗憾的是连一行代码都还没有写,这也是 Spring Boot 的魅力所在,让 Java 程序员更专注于业务逻辑开发。

2.3. 添加业务逻辑

终于可以写几行代码了,终于可以实现点业务逻辑了。

自定义需求:提供一个 say 方法,可接受用户输入的参数 name,默认值为 World,然后输出 Hello name!

4d0a7bde9be91defccfbf42eb9a5d6b6.png
4d0a7bde9be91defccfbf42eb9a5d6b6.png

实现步骤如上图所示很简单:

提供一个 say 方法,可接受用户输入的参数 name,默认值为 World,然后输出 Hello name!(见上图中标注2)

添加注解 @RestController(见上图中标注1,注解后续会单独讲解)

2.4 跑起来,Try it

直接浏览器访问 http://localhost:8080/say ,此时参数 name 不传入值,直接展示默认值。

8aedac7805ad6241901b8a93465b57ce.png
8aedac7805ad6241901b8a93465b57ce.png

访问时传入参数值,http://localhost:8080/say?name=Amy,此时参数 name 传入 Amy,页面展示如下。

da87cc3418efbe53da4ffa699ad37565.png
da87cc3418efbe53da4ffa699ad37565.png

至此,SpringBoot  的大门已打开,万里长征稳稳地踏了一步,接下来再一起看看 Spring Boot 项目的目录结构。

2.5. Spring Boot 项目的目录结构

bfc02c919b8dd6112cda7eecd279e46e.png
bfc02c919b8dd6112cda7eecd279e46e.png

pom.xml:构建说明文件。 /src/main/java:Java 源代码文件。 /src/main/resources:所有的资源文件,包括静态资源文件、配置文件、页面文件等。 /src/main/resources/static:Web 应用程序的静态内容(js、css、images等)。 /src/main/resources/templates:存放呈现模型数据的模板。 /src/main/resources/application.properties:配置文件,可以根据需要添加配置属性。 /src/test/java:单元测试类 java 源代码。 /target:存放编译后的 .class 文件、配置文件以及项目打包后生成的 jar 文件等。

至此,却有很多疑问涌上心头。

若同一台服务器上,部署 N 套 Spring Boot 项目,默认开启都是 8080,端口岂不是被占用,何解?

另外 Spring Boot 还带来了什么好玩的事情呢?下面一起捣腾捣腾、尝试玩一玩 Spring Boot 项目。

2.6.  玩玩 Spring Boot 项目

1b6018b03c4a58d74d45a00ff8e856b6.png
1b6018b03c4a58d74d45a00ff8e856b6.png

上图是 Spring Boot 项目启动时的控制台日志输出,接下来主要对图中标注的部分进行倒腾替换一下。

2.6.1. 8080 端口被占用了咋办(控制台输出截图标注 1)?

同一台服务器上,部署 N 套 Spring Boot 项目,默认开启都是 8080,端口被占用,何解?

解决方案却很简单,只需在 /src/main/resources 目录的 application.properties 配置文件中自定义 server.port 就可以了,此时把服务启动的端口修改为 8888,配置如下。 server.port=8888

服务跑起来,服务端口成功修改为 8888,效果如下。

1b853ee7f2490de69f4dd702621630e8.png
1b853ee7f2490de69f4dd702621630e8.png

2.6.2. 内嵌的 Tomcat 容器是否可以置换一下(控制台输出截图标注 2)?

Spring Boot 除了可以选择 Tomcat 容器,还可以选择其它服务器,接下来尝试选择 Jetty 作为内嵌服务器。

实现方式很简单:

打开 pom.xml 文件,首先排除掉默认的 Tomcat 容器;

然后添加 Jetty 服务器依赖,就 Ok 了。

332671520cf0c8e7018b9616e30ce306.png
332671520cf0c8e7018b9616e30ce306.png

服务跑起来,Spring Boot 选择的内嵌容器由 Tomcat 成功修改为 Jetty 容器,效果如下。

254a3d5f2f0c52ec10471b27bf92c065.png
254a3d5f2f0c52ec10471b27bf92c065.png

2.6.3. 能否定义超级个性 banner (控制台输出截图标注 3)?

12e04b1f1d9fab399342fd4822a9d438.png
12e04b1f1d9fab399342fd4822a9d438.png

Spring Boot 支持以 txt、gif、jpg、png 为后缀,以 banner 命名的资源文件形式来自定义 banner,例如 banner.txt 或者 banner.jpg。

实现方式很简单,花拳绣腿而已。

首先打开如下任一网址录入文字,选择个性化的样式,把生成的内容保存到 banner.txt。 http://patorjk.com/software/taag/ https://www.bootschool.net/ascii

  • 然后把 banner.txt 复制到项目中 src/main/resources 目录下。
38e46e7e6ededaee42e7e67194bb8b2c.png
38e46e7e6ededaee42e7e67194bb8b2c.png

服务跑起来,控制台的输出确实个性化了有没有?

72204ab35905eeb7368c0a1098061919.png
72204ab35905eeb7368c0a1098061919.png

感兴趣的可以考虑找个性化图片,去试试看效果如何。

3、例行回顾

本文是 Spring Boot 入门级的讲解,以 Spring 官方文档入门案例作为切入点,主要分享了如下部分:

准备 Spring Boot 项目依赖环境

创建 Spring Boot 项目的两种方式

运行 Spring Boot 项目的三种方法

尝试添加业务逻辑代码,实现了一个 say Hello 的 API

Spring Boot 项目的目录结构介绍

尝试修改默认 WEB 端口

尝试修改 Spring Boot 内嵌容器

尝试加入个性化的 Banner

如果是 Java 小白,相信通过这个入门级的项目,能够正式迈入 Spring Boot 的大门,相信程序中的很多注解会让你摸不着头脑,不过这些都可以先忽略,随着后续的逐步深入与练习,这些都会形成肌肉记忆,一切都不是问题。

如果是 Java 老兵,相信通过这个入门级的项目,能够轻松感受到 Spring Boot 着实去除了繁琐的 XML 配置,使项目更加简洁化、智能化,让 Java 程序员更专注业务逻辑开发,正如 Spring 的 slogan 所言:Spring makes Java simple.  真可谓是 Java 程序员的又一春。

参考资料:

https://spring.io/

https://start.spring.io/

https://spring.io/projects/spring-boot

https://github.com/spring-projects/spring-boot

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

https://stackoverflow.com/questions/tagged/spring-boot

《Spring Boot实战》《深入浅出Spring Boot 2.x》

《一步一步学Spring Boot:微服务项目实战(第二版)》

《Spring Boot揭秘:快速构建微服务体系》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档