SpringBoot 2.7.2 学习系列,本节内容快速体验Spring Boot,带大家了解它的基本使用、运行和打包。

Spring Boot 基于 Spring 框架,底层离不开 IoC、AoP 等核心思想。Spring 4.0 提供了基于 Java Config 的开发方式,Spring Boot 应运而生,可以简化 Spring 应用开发过程,同时也可以快速方便的集成第三方框架,如 MyBatis、Redis 等。

0 版本说明

  1. 开发工具 IDEA 版本:2021.2
  2. Maven 版本: 3.6.3
  3. Spring Boot 版本:2.7.2
  4. JDK 版本:JDK 8
  5. MySQL 版本:MySQL 8

说明,当前 Spring Boot 2.x 最新稳定版为 2.7.2 ,JDK 8 需要以上版本、Maven 需要 3.5 以上版本。(本想基于 Spring Boot 3.x,但 3.x 需要 Java 17,优雅哥电脑还只是 JDK 8)

1 创建 Spring Boot 应用

1.1 创建工程

1)打开 idea,新建一个 Maven 项目,点击“Next”

2)输入 Name、GroupId、ArtifactId,点击“Finish”

1.2 设置 IDEA

在 IDEA 的 Preferences 中设置 JDK、Maven

1)设置 Maven

2)设置 JDK

在 Module Settings 中设置 JDK

首先设置 SDKs:

接着在 “Project” 中选择设置的 SDK

最后在 “Modules” 中选择 Language Level:

2 添加 Spring Boot 支持

2.1 添加依赖

1)在 pom.xml 中添加 Spring Boot 依赖。

在烂大街的文章博客中,都是通过 parent 的方式继承 spring-boot-starter-parent,如下:

    <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
</parent>

这种方式几乎都用于在 demo 编写中,在大型项目或中大型企业中很少见到这么使用的。因为每个 module 只能有一个 parent ,而在企业开发中,微服务有多个服务,多个服务一般会继承自一个统一的 module,便于版本控制、通用功能等。如果在每个服务中都让spring-boot-starter-parent 占据了 parent 节点,那如何继承统一的 parent module 呢?

或许有人会说,在 parent module 中继承 spring-boot-starter-parent。没错,确实可以这样。但除了服务,还会有一些公共模块(如对参数校验、通用响应、分布式 Redis 锁、Spring Doc等通用模块)也继承自这个parent module,这样一来,这些公共module也被迫添加了压根没有使用 spring boot starter 依赖。

我的做法是通过 spring-boot-dependencies 来实现:

  1. 在 properties 中定义 spring-boot-dependencies 版本号
  2. 在依赖管理 dependencyManagement 中,通过 pom 的方式、scope 为 import 添加 spring-boot-dependencies
  3. 在依赖dependencies中添加需要使用到的依赖。

pom.xml 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.yygnb.demo</groupId>
<artifactId>hero-springboot-demo</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!-- Spring Boot 版本 -->
<spring-boot-dependencies.version>2.7.2</spring-boot-dependencies.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> </project>

2.2 创建启动类

创建启动类:com.yygnb.demo.DemoApplication

@SpringBootApplication
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

3 测试运行

3.1 添加测试Controller

创建测试使用的 Controller:com.yygnb.demo.controller.DemoController

@RestController
@RequestMapping("demo")
public class DemoController { @GetMapping("hello")
public String hello(String msg) {
String result = "Hello Spring Boot ! " + msg;
System.out.println(result);
return result;
}
}

3.2 启动运行

运行DemoApplication 中的 main 方法即可启动应用。控制台显示如下,则应用启动成功:

在浏览器中访问:

http://localhost:8080/demo/hello?msg=FirstTest

页面上和控制台中都会显示:

Hello Spring Boot ! FirstTest

3.3 修改端口

Spring Boot 默认运行的端口为 8080,如果要修改运行的端口号,需要修改配置实现。Spring Boot 支持三种格式的配置文件:xml、yml、yaml,在项目中使用 yml格式较多。

使用 yml 格式需要注意:

1. 使用冒号分隔属性名和属性值
2. 字符大小写敏感
3. 层级之间缩进敏感(间隔两个空格)
4. 属性值前面需要加一个空格

Spring Boot 核心配置文件名为 application。

在 src/main/resources 中创建配置文件application.yml

server:
port: 9099

该配置指定了服务运行的端口号为 9099,重启服务,将上面的访问路径中的8080修改为 9099 再次访问。

4 打包

Maven 工程打包是通过 mvn 命令进行的。在控制台中项目根目录下执行下列命令:

mvn clean package

执行该命令后,会在 target 目录下生成 hero-springboot-demo-1.0-SNAPSHOT.jar。查看该文件的大小,只有 4kb,这是因为直接打包仅仅会打包当前的代码,相关使用到的 spring boot 的依赖并不会包含进去,此时的 jar 文件是不能直接运行的。如果要让打包后的 jar 可以直接运行,需要在 pom.xml 中配置相关插件配置:

4.1 配置插件

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot-dependencies.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

重新执行 mvn clean pacakge,会在 target 中生成两个文件:

  • hero-springboot-demo-1.0-SNAPSHOT.jar.original
  • hero-springboot-demo-1.0-SNAPSHOT.jar

前者是打包的原始文件,和配置插件前一样,仅包含当前项目的代码。后者就包含了 spring boot 有关依赖,内置 Tomcat,可以直接运行。

4.2 运行 jar

可通过 java 命令执行上面打包生成的可执行文件。在控制台中执行:

java -jar target/hero-springboot-demo-1.0-SNAPSHOT.jar

命令执行后,依旧会启动服务。

本文记录了另一种依赖 spring boot 的方式,下一篇集成MyBatis Plus实现增删改查。

今日优雅哥(youyacoder)学习结束,期待关注留言分享~~

快速体验Spring Boot了解使用、运行和打包 | SpringBoot 2.7.2学习系列的更多相关文章

  1. Spring Boot-初学01 -使用Spring Initializer快速创建Spring Boot项目 -@RestController+spEL -实现简单SpringBoot的Web页面

    1.IDEA:使用 Spring Initializer快速创建项目 IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目: 选择我们需要的模块:向导会联网创建Spring ...

  2. Springboot(一):使用Intellij中的Spring Initializr来快速构建Spring Boot工程

    使用Intellij中的Spring Initializr来快速构建Spring Boot工程 New---Project 可以看到图所示的创建功能窗口.其中Initial Service Url指向 ...

  3. 构建微服务:快速搭建Spring Boot项目

    Spring Boot简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  4. 想要快速上手 Spring Boot?看这些教程就足够了!| 码云周刊第 81 期

    原文:https://blog.gitee.com/2018/08/19/weekly-81/ 想要快速上手 Spring Boot?看这些教程就足够了!| 码云周刊第 81 期 码云周刊 | 201 ...

  5. spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext

    spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext 学习了: http ...

  6. spring boot项目后台运行

    spring boot项目后台运行 Spring Boot应用的几种运行方式: (1)运行Spring Boot的应用主类 (2)使用Maven的Spring Boot插件mvn spring-boo ...

  7. 基于 intellij IDEA 快速搭建Spring Boot项目

           在<一步步搭建 Spring Boot maven 框架的工程>一文中,已经介绍了如何使用Eclipse快速搭建Spring Boot项目.由于最近将开发工具由Eclipse ...

  8. 快速搭建Spring Boot + Apache Shiro 环境

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Apache Shiro 介绍及概念 概念:Apache Shiro是一个强大且易用的Java安全框 ...

  9. 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程(十五)

    在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...

随机推荐

  1. 关于position的relative和absolute分别是相对于谁进行定位的

    position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP.RIGHT.BOTTOM.LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始 ...

  2. Endeavour OS 安装流程中的一些小问题的对应的解决方案

    安装窗口显示"系统未连接到互联网",但实际上已经连接了 Endeavour OS 检测系统是否连接上互联网的方式就是 ping 一个目标站点,这个站点默认写入在 /etc/cala ...

  3. java和.net 双语言开发框架,开源的PaaS平台

    当下,我国国内的PaaS平台正在蓬勃发展,各式各样的PaaS平台层出不穷,但万变不离其宗,一个优秀的PaaS平台总有自己独树一帜或与众不同的地方.那么,首先我们要了解下什么是PaaS平台?PaaS是( ...

  4. JAVA - 线程同步和线程调度的相关方法

    JAVA - 线程同步和线程调度的相关方法 wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁:wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等 ...

  5. Fiddler对安卓高版本进行抓包解决方案以及分析 进阶二

    今天是2021年的最后一天了,多分享一些干货吧!看过上一章节教程后会有同学疑惑,我也一步一个脚印的,跟着流程走也设置了代理以及安装了证书,有的同学会发现 为什么手机不能够连接网络了呢?细心一点的同学会 ...

  6. python爬虫之JS逆向某易云音乐

    Python爬虫之JS逆向采集某易云音乐网站 在获取音乐的详情信息时,遇到请求参数全为加密的情况,现解解决方案整理如下: JS逆向有两种思路: 一种是整理出js文件在Python中直接使用execjs ...

  7. MongoDB学习总览

    第1部分: MongoDB入门(第1~6章) 该部分介绍MongoDB的基本概念及入门知识. 通过该部分的学习,读者可对MongoDB自身的技术全貌形成一定的认识. 第2部分: MongoDB微服务开 ...

  8. 某CMS后台通杀getshell

    此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本.这些漏洞挖掘出来的时候已经在cnvd被提交过了.但是网上并没有漏洞文章.避免风险这里只分享思路. ...

  9. git stash 的一次惊心动魄的误删操作

    git stash 的一次惊心动魄的误删操作 简介:行走在互联网最低端的小熊 问题--源起: 小熊和所有混迹在互联网中的开发一样,公司里面用git来管理项目,由于可能经常有几个问题要开发,要频繁在多分 ...

  10. AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践

    云知声是一家专注于语音及语言处理的技术公司.Atlas 超级计算平台是云知声的计算底层基础架构,为云知声在 AI 各个领域(如语音.自然语言处理.视觉等)的模型迭代提供训练加速等基础计算能力.Atla ...