两种方式,花五分钟就能构建一个 Spring Boot 应用
前言
Spring Boot 的好处自然不必多说,对于想要从事 Java 工作的朋友们来说,可谓是必学的技能。
在我看来,它的优势就是多快好省。
- 功能多,很多常用的能力都有集成;
 - 接入快,简单的几行代码就能完成接入;
 - 维护好,社区活跃度高,有了问题能够第一时间找到解答;
 - 省钱,免费开源项目自然是个人或者企业的最爱。
 
接下来详细讲下 Spring Boot 的接入教程,方便刚接触这项技术的读者朋友学习。
相关依赖
技术栈:
- Java 8
 - Maven 3
 - Spring Boot 2.4.2
 
环境:
- 操作系统:MacOS(Windows 也类似)
 - IDE(集成开发环境):IntelliJ IDEA 旗舰版 2020.1 版本
 
Spring Boot 项目初始化
有两种方式:
- 官网打包
 - IDE 生成
 
官网打包
访问官网:https://start.spring.io/。
指定项目构建方式 Maven,选择语言 Java。
Spring Boot 选择最新稳定版本 2.4.2,项目元数据填写组织和项目相关信息。
右侧依赖选择自己会用到的包,这里我选择了 Lombok 和 Spring Web,前者帮我们少写代码,后者支持 web 页面访问,方便我做演示。
然后点击底下的 GENERATE 按钮,网站会自动生成 zip 包并且下载到本地。

解压后,我们就可以看到如下的目录结构。HELP 是帮助文档,mvnw 是程序启动命令文件,pom 放置了项目依赖,src 包含了项目的源代码。

IDE 生成
接入插件:
- 进入 IntelliJ IDEA 的偏好设置,在 Plugins 里搜索 Spring Boot,方框框上打钩,使插件生效。
 - 按提示重启 IDE,即可使用。
 

进入 IntelliJ IDEA,点击创建新项目。

选择 Spring Initializr,指定项目的 Java SDK,选择默认的启动方式,该方式需要联网,点击下一步。

默认需要填写以下信息,如图:

我改了下名字,叫 course,表明是教程网站的一个项目。同时我把默认的 Java 版本降到了 8,因为这个版本我比较常用。

点击下一步,我们看到的是添加依赖的页面,支持关键词搜索,你可以选取自己需要的依赖包。实际效果和官网页面是一致的,这里我依然选择了 Lombok 和 Spring Web。

点击下一步,设置项目名和路径,名称默认取之前 Maven 设置里的 artifact 的值,我一般不会改。

点击完成,IDE 就帮我们建好了 Spring Boot 的项目,文件结构和我们官网下载的包是一致的。

项目会为我们生成一个应用程序启动入口,选中 main 方法运行,这个 Spring Boot 程序就跑起来啦。

以下是启动日志记录,右上角的红色方块代表运行中。再点下红色方块,控制台就会提示程序退出,右上角方块也会变灰。

除了利用 IDE 启动 Spring Boot 外,还可以使用项目生成的命令行工具。定位到项目的家目录下,执行以下命令(MacOS/Linux):
 ./mvnw spring-boot:run
Windows 用户执行以下命令:
mvnw spring-boot:run
会看到这个 Spring Boot 项目从构建到编译再到部署的全过程。


如果想要终止应用程序的话,Ctrl + C 即可。

刚才的演示过程是没有涉及到 Web 页面的,那如果想看到页面的访问效果,该怎么做呢?
添加 Web 代码
Web 相关的依赖我们在建项目的时候已经引入了,因此只需要增加相关的代码即可。
首先定位到文件 CourseApplication.java,然后在启动类上增加注解 @RestController,同时添加一个 web 访问的方法。
@SpringBootApplication
@RestController
public class CourseApplication {
    public static void main(String[] args) {
        SpringApplication.run(CourseApplication.class, args);
    }
    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello %s!", name);
    }
}
此时启动 Spring Boot,然后打开浏览器访问 http://localhost:8080/hello,就可以看到默认的输出了。为什么端口是 8080 呢?你回去看下启动日志的截图,会发现项目用了 Tomcat 的 Web 服务器,HTTP 的初始化端口是 8080。

当然也可以带参数去访问这个 Get 请求,比如下面这种访问。

端口我们也可以自己指定,放到应用配置文件 application.properties 中即可。
# 默认的 8080 修改为 9090
server.port=9090
重启程序后,日志打印发生了变化,浏览器访问同样要用新配置的端口才能访问成功。

好了,快速构建 Spring Boot 应用的介绍就到这里,如果对你也有用的话,可以给我点个赞,点个在看,也可以分享给身边朋友,非常感谢读者朋友。
我是蜗牛,正在互联网上疯狂爬行,下期见。

两种方式,花五分钟就能构建一个 Spring Boot 应用的更多相关文章
- 两种方式(xml+代码)构建SqlSessionFactory+完整实现
		
首先创建类.接口.数据库: entity包下Admin类: package com.wbg.springJavaConfig.entity; public class Admin { private ...
 - ABAP和XML数据格式互相转换的两种方式
		
ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求.本文介绍两种方式. 1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_x ...
 - 五 Mybatis一对一关联查询的两种方式(基于resultType&基于resultMap)
		
关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe,一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的po ...
 - 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目
		
随着使用Spring进行开发的个人和企业越来越多,Spring从一个单一简介的框架变成了一个大而全的开源软件,最直观的变化就是Spring需要引入的配置也越来越多.配置繁琐,容易出错,让人无比头疼, ...
 - XFire构建服务端Service的两种方式(转)
		
XFire构建服务端service的两种方式,一是用xfire构建,二是和spring集成构建. 一,xifre构建,确保把xfire的jar包导入到工程中或classpath. 1,service的 ...
 - XFire构建服务端Service的两种方式
		
1.原声构建: 2.集成spring构建 http://blog.csdn.net/carefree31441/article/details/4000436XFire构建服务端Service的两种方 ...
 - Docker镜像构建的两种方式
		
关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行 ...
 - k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
		
命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx ...
 - Docker镜像构建的两种方式(六)--技术流ken
		
镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...
 
随机推荐
- Linux简单复习
			
cd 命令:切换目录 ls命令:用于浏览目录下的文件或者文件夹 rm 命令:用于删除文件或者目录,用法 rm –rf test.txt (-r表示递归,-f表示强制) cp 命令:用于拷贝文件,用法, ...
 - 5、Mycat安全
			
1.权限配置 [1].user标签 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制.是通过 server.xml 的 user 标签进行配置. # ...
 - ASP.NET Core Web 支付功能接入 微信-扫码支付篇(转)
			
原文 https://www.cnblogs.com/essenroc/p/8630730.html // 随着版本更迭,新版本可能无法完全适用,请参考仓库内的示例. 这篇文章将介绍ASP.NET C ...
 - C#中使用Response下载
			
正常流程 正常的从服务器端下载文件的流程 System.IO.FileInfo file = new System.IO.FileInfo(s_path); HttpContext.Current.R ...
 - Linux 网卡 team配置
			
网卡 team配置 目录 网卡 team配置 一.介绍 runner 方式: 1.roundrobin [mode 0]轮转策略 (balance-rr) 2.activebackup[mode 1] ...
 - 如何利用Typora编写博客,快速发布到多平台?
			
在不同的平台发布同样的文章,最让人头疼的就是图片问题,如果要手动一个个去重新上传,耗时耗力,还容易搞错.下面分享的方法,可以将Typora编写的文章快速发布到CSDN.微信公众号.博客园.简书等平台. ...
 - 单细胞分析实录(5): Seurat标准流程
			
前面我们已经学习了单细胞转录组分析的:使用Cell Ranger得到表达矩阵和doublet检测,今天我们开始Seurat标准流程的学习.这一部分的内容,网上有很多帖子,基本上都是把Seurat官网P ...
 - 死磕以太坊源码分析之MPT树-下
			
死磕以太坊源码分析之MPT树-下 文章以及资料请查看:https://github.com/blockchainGuide/ 上篇主要介绍了以太坊中的MPT树的原理,这篇主要会对MPT树涉及的源码进行 ...
 - python函数----名称空间和作用域
			
一 名称空间 名称空间即存放名字与对象映射/绑定关系的地方. 对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系. 在程序执行 ...
 - 关于Objects类的getClass方法为什么可以得到子类的地址的思考
			
这一段时间,总是很纠结为什么Objects中的getClass方法可以返回包含子类地址信息的东西(我不确定返回值类型). 因为在Java中,我们定义的父类,我想破脑袋也想不出怎么可以得到子类的信息. ...