当前位置: 首页 > news >正文

Spring Boot 快速入门(绝对经典)

目录

1、理论概述

1.1、什么是Spring Boot?

1.2、Spring Boot的特点

1.3、开发环境

2、实战——创建和配置项目

2.1、Spring Boot项目创建的两种方式

2.1.1、方法一:通过网站构建项目

2.1.2、使用Spring Initializr创建(推荐)

2.2、Spring Boot目录介绍

3、项目运行

3.1.实现页面交互打印功能(简单的Hello World)

3.1.1、功能解释

3.1.2、运行Spring Boot

3.1.3、执行效果

3.2、注意事项

3.2.1、约定大于配置

4.总结


1、理论概述


1.1、什么是Spring Boot?

         Spring Boot 是基于 Spring 设计的一个全新的框架,其目的是用来简化 Spring 的应用、初始搭建、开发的整个过程(如果说 Spring 是手动档汽车,那么 Spring Boot 就是自动挡汽车)。Spring Boot就是一个整合了很多可插拔组件的框架,内嵌工具(例如Tomcat、Jetty等),方便开发人员快速搭建和开发的一个框架。

1.2、Spring Boot的特点

  • Spring Boot 提供了启动添加依赖的功能,可以快速搭建框架。
  • 内置容器,省去了配置Tomcat等Web容器的繁琐,可以直接运行和部署。
  • Spring Boot的核心理念:约定大于配置,约定了某种规范,可以不用配置,直接进行开发,例如模型和表名一致就可以不用配置...
  • 完全摒弃繁琐的XML,使用注解和配置进行开发
  • ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。

1.3、开发环境

Spring Boot 2.7.8

JDK 1.8

IDE:IntelliJ IDEA 2021.3.2

注意:Spring Boot 2.x 要求Java8及以上版本,不再支持Java6、Java7.

2、实战——创建和配置项目


2.1、Spring Boot项目创建的两种方式

2.1.1、方法一:通过网站构建项目

a)访问网址:https://start.spring.io/

b)对你的项目进行配置,如下图:

最后点击Generate Project按钮生成项目。

c)解压刚刚下载好的文件,点击IDEA File => New => Project from Existing Sources… => 选择你解压项目文件夹目录 => 点击Ok => 选择Import project from external model => 选中Maven => 一路点击Next直到项目导入成功。
 

2.1.2、使用Spring Initializr创建(推荐)

a)如果你是使用的IDEA社区版,需要安装以下插件(不是社区版可以跳过此步骤)

所需插件:Spring Boot Helper(如下图)

注意:此插件在IDEA社区版2022.1.x之前都免费,IDEA社区版2022.2.x之后开始收费,所以IDEA社区版版本的选择,大家自行选择。

这个插件就是用来构建 Spring Boot 框架的,之后,你在创建一个项目的时候可以看到这样一个选项(就是通过来创建Spring Boot框架),如下图:

b)接下来就是创建Spring-Boot项目的步骤: 

最后一路Next即可,最终目录结构如下:

如果你得到了上图这个目录结构,说明你的项目已经创建好了,但是还没有初始化,因此还需要以下步骤:

然后点击OK,接着就是一个,漫长的等待过程,当你的项目出现了下图变化,才说明你的Spring-Boot项目已经创建并初始化完成:

 

2.2、Spring Boot目录介绍

3、项目运行


3.1.实现页面交互打印功能(简单的Hello World)

在demo目录下创建一个类(名字自己随便起,这里是为了演示)如下图:

代码如下:

import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller //当前类为控制器
@ResponseBody //返回的是数据,而非页面
//@RestController 是以上两种两个注解合并
public class TestController {@RequestMapping("/hi") // url 路由注册public String sayHi(String name) {//判空处理if(!StringUtils.hasLength(name)) {name = "张三";}return "你好:" + name;}}

3.1.1、功能解释

1.我们需要给类TestController设置@RestController注解,@RestController是@Controller和@ResponseBody的集合(@controller表示当前类的控制器,@ResponseBody表示返回的是数据,而非页面) 如果只是使用@RestController注解,无法返回jsp和html,这里只是为了便于演示;

2.标识访问方法注解@RequestMapping,这样我们才能访问到对应的方法,上述代码中映射的方法就是sayHi方法。

3.StringUtils.hasLength是一个判空处理,检查当前name的值是否为null或者空字符串。

3.1.2、运行Spring Boot

先找到Spring Boot启动类(@SpringBootApplication注解下的类),运行启动类中的main方法即可。

3.1.3、执行效果

a)如果程序出现下图,标识Spring-Boot项目已经运行起来了,并且如果程序保持没有停止,说明程序正常运行~

b)从打印的日志信息中可以看出,默认端口号是8080,如下:

c)接着,打开你的浏览器,输入127.0.0.1:8080/hi 或者 localhost:8080/hi 访问你的sayHi方法:

你也可以输入一段 query string 表示name,例如 localhost:8080/hi?name="世界",如下:

3.2、注意事项

3.2.1、约定大于配置

Spring Boot 项⽬有一个最大的特点:约定⼤于配置。

就是说我们创建的包或类需要写在java/com/example/demo的目录或者子目录下(默认是这样,但也可以自己配置),否则否则无法将对象注入到容器中!

类似于Spring项目中的扫描Bean的路径一样,如下图:

 

3.2.2、错误演示

如果将我们写的类移动到其他包下(不在demo的目录或者子目录下),例如下图:

重新启动项⽬,访问 localhost:8080/hi就会出现如下错误:

404表示你输入的路径错误,实际上是因为你写 TestController 类,没有注入到容器当中。

4.总结


1.几个重要的面试问题

  • 什么是Spring Boot?
  • 为什么要使用Spring Boot?(对比Spring的优点是什么?)

2.Spring Boot的开发工具和版本

3.Spring Boot项目的创建和使用

如果感觉感觉本文对你有帮助,不妨~

 

相关文章:

Spring Boot 快速入门(绝对经典)

目录 1、理论概述 1.1、什么是Spring Boot? 1.2、Spring Boot的特点 1.3、开发环境 2、实战——创建和配置项目 2.1、Spring Boot项目创建的两种方式 2.1.1、方法一:通过网站构建项目 2.1.2、使用Spring Initializr创建(推荐) 2.2、…...

golang context上下文

文章目录一、为什么需要context二、context 接口三、Background 方法四、 with 系列函数1、WithCancel 方法2、WithDeadline 方法3、WithTimeout 方法4、WithValue 方法五、使用注意事项一、为什么需要context 在 Go http包的Server中,每一个请求在都有一个对应的 …...

Linux---Linux是什么

Linux 便成立的核心网站: http://www.kernel.org Linux是什么 Linux 就是一套操作系统 Linux 就是核心与系统呼叫接口那两层 软件移植:如果能够参考硬件的功能函数并据以修改你的操作系统程序代码, 那经过改版后的操作系统就能够在另一个硬…...

C语言(Tgmath.h库(C99),exit和atexit)

一.Tgmath.h库(C99) C99标准提供得tgmath.h头文件定义了泛型类型宏。比如在math.h中为一个函数定义了3中类型(float,double和long double)的版本,那么tgmath.h文件就创建一个泛型类型宏,与原来的float,double和long double版本的…...

LeetCode 刷题系列 -- 739. 每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入:temperatures …...

如何生成毕业论文的目录和创建模板

有粉丝同学最近在写毕业论文,其中比较让人恼火的是毕业论文的目录,折腾了几遍没弄好,想让我写个简单地教程,那就来吧。主要分为三步:第一步是从模板里面提取标题的样式,第二步是对自己的论文使用设置好的标…...

新来的23岁软件测试员上来秀了波操作,把几个老员工看傻了

春招了,公司来了个小伙子,一看简历,嘿?22岁,这不刚毕业的小毛孩子嘛,结果没想到人家上来就把现有项目的性能优化了一遍,给公司节省了一半的成本,这种“王炸”打法,直接给…...

Window10开放某个端口

需求:由于防火墙原因,开放某个端口:如9999 在开始那里搜索防火墙-进入防火墙 第一步:核实是否启动了防火墙,之后进行 第二步:点击“高级设置”,→“入站规则”→“新建规则”→“端口”→ “下一步” …...

进阶7 分页查询

进阶7 分页查询!!! 目录概述练习题概述 应用场景:当要显示的数据一页显示不全,需要分页提交SQL请求 语法: select 查询列表 from 表名 【join type join 表2 on 连接条件 where 筛选条件 group by 分组字段…...

利用升序定时器链表处理非活动连接

参考自游双《Linux高性能服务器编程》 背景 服务器同常需要定期处理非活动连接:给客户发一个重连请求,或关闭该连接,或者其他。我们可以通过使用升序定时器链表处理非活动连接,下面的代码利用alarm函数周期性的触发SIGALRM信号&a…...

MySQL 开发规范

一、数据库命名规范所有数据对象名称必须小写 :​​db_user​​禁止使用MySQL 保留关键字,若是则引用 临时表以​​tmp_​​​ 开头,备份表以​​bak_​​ 开头并以时间戳结尾所有存储相同数据的列名和列类型必须一致二、数据库基本设计规范​​1、MySQL…...

【C语言进阶】预处理与程序环境

目录一.详解编译与链接1.前言2.翻译环境3.剖析编译过程4.运行环境二.预处理详解1.预定义符号2.剖析#define(1).定义标识符(2).定义宏(3).替换规则(4).#和##(5).宏与函数的对比(6).#undef3.条件编译4.文件包含(1).头文件包含的方式(2).嵌套文件包含一.详解编译与链接 1.前言 在…...

【Docker知识】将环境变量传递到容器

一、说明 程序通常通过与软件捆绑在一起的配置来控制操作,环境变量允许用户在运行时设置它们。但是,在 Docker 容器中运行进程会使事情变得复杂,那么如何将环境变量传递给容器呢?下面介绍若干个传递办法。 二、环境变量有何用途 环…...

Allegro如何更改铜皮显示密度操作指导

Allegro如何更改铜皮显示密度操作指导 用Allegro做PCB设计的时候,铜皮正常显示模式如下图 铜皮的密度是基本填充满的,Allegro支持更改铜皮的显示密度 如下图 如何更改密度,具体操作如下 点击setup...

ThinkPHP5酒店预订管理系统

有需要请私信或看评论链接哦 可远程调试 ThinkPHP5酒店预订管理系统一 介绍 此酒店预订管理系统基于ThinkPHP5框架开发,数据库mysql,采用了ueditor富文本编辑器。系统角色分为用户,员工和管理员。用户可注册登录并预订酒店和评论等&#xff…...

【MySQL】MyCat分库分表分片规则配置详解与实战(MySQL专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公…...

OpenWrt路由器设置域名动态解析手把手教程

文章目录0、前言1、准备工作2、详细步骤2.1、OpenWrt路由器软件包安装2.2、防火墙放行入站数据(修改为“接受”并保存应用)2.3、域名解析服务商对域名的解析设置2.4、路由器中动态域名插件的设置0、前言 因为一直用着内网穿透(zerotier或者是…...

java流浪动物救助系统(毕业设计)

项目类型:Java web项目/Java EE项目(非开源) 项目名称:基于JSPServlet的流浪动物救助网站[dwjz_web] 进行源码获取 用户类型:双角色(爱心人士、管理员) 项目架构:B/S架构 设计思…...

阿里代码规范插件中,Apache Beanutils为什么被禁止使用?

在实际的项目开发中,对象间赋值普遍存在,随着双十一、秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面。 问:如果是你来写对象间赋值的代码,你会怎么做? 答&#xf…...

NFC enable NFC使能流程

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 NFC enable NFC使能流程 认识nfc系统如何工作,最好的方法就是了解nfc的各个流程,…...

Redis实例绑定CPU物理核优化Redis性能

进入本次Redis性能调优之前,首先要知道CPU结构也会影响Redis的性能。接下来,具体了解一下!为什么CPU结构也会影响Redis的性能?主流的 CPU 架构一个 CPU 处理器中一般有多个物理核,每个物理核都可以运行应用程序。每个物…...

STC15中断系统介绍

STC15中断系统介绍✨本篇参考来源于STC官方stc15系列手册:538页- 589页。(文末提供该摘取部分的文档资料) 🎉在官方提供的手册资料中,一个系列一份手册,手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说…...

力扣HOT100 11-15

11.盛水最多的容器 思路:最大水量 底边 * 高度。较短的一边控制最大水量,因此,采用双指针的方式,左、右指针指向开始和末尾,逐个向中间移动,判断左右指针所指向的高度哪个更低,它就向中间移动一…...

深入浅出单调栈与单调队列

目录一、单调栈情形一:寻找一个数左边第一个小于它的数情形二:寻找一个数左边第一个小于它的数的下标情形三:寻找一个数右边第一个大于它的数情形四:寻找一个数右边第一个大于它的数的下标二、单调栈的应用2.1 单调栈模板题I2.2 单…...

深入C语言——实现可变参数函数

文章目录初步示例函数解析最大值函数初步示例 stdarg.h提供了C语言对可变参数的支持&#xff0c;先举一个简短的例子 //testStdArg.c #include <stdarg.h> #include <stdio.h>void printIntList(int N, ...){va_list args; //存放...所代表的参数va_start(…...

41-Dockerfile-Dockerfile简介

Dockerfile简介前言Dockerfile 简介基础知识使用Dockerfile 构建镜像步骤Dockerfile 构建过程Dockerfile基本结构Dockerfile示例总结前言 本篇开始来学习下Dockerfile相关的用法 Dockerfile 简介 Dockerfile : 是用来构建 Docker 镜像的文本文件&#xff0c;是有一条条构建镜…...

【408】操作系统 - 刻骨铭心自测题1(上)

文章目录OS练习题第一部分&#xff1a;1&#xff1a;2&#xff1a;3&#xff1a;4&#xff1a;5&#xff1a;6&#xff1a;7&#xff1a;8&#xff1a;9&#xff1a;10&#xff1a;11&#xff1a;12&#xff1a;13&#xff1a;14&#xff1a;15&#xff1a;16&#xff1a;17&am…...

【老卫拆书】009期:Vue+Node肩挑全栈!《Node.js+Express+MongoDB+Vue.js全栈开发实战》开箱

今天刚拿到一本新书&#xff0c;叫做《Node.jsExpressMongoDBVue.js全栈开发实战》&#xff0c;做个开箱。 外观 先从外观上讲&#xff0c;这本是全新的未开封的&#xff0c;膜还在。 这本书介绍从技术原理到整合开发实战&#xff0c;以丰富的项目展现全栈开发的一个技巧。 …...

【LeetCode】动态规划总结

动态规划解决的问题 动态规划和贪心的区别&#xff1a; 动态规划是由前一个状态推导出来的&#xff1b; 贪心是局部直接选最优的。 动态规划解题步骤 状态定义&#xff1a;确定dp数组以及下标的含义状态转移方程&#xff1a;确定递推公式初始条件&#xff1a;dp如何初始化遍历…...

CAS详解.

CAS这个机制就给实现线程安全版本的代码&#xff0c;提供了一个新的思路&#xff0c;之前通过加锁&#xff0c;把多个指令打包成整体&#xff0c;来实现线程安全。现在就可以考虑直接基与CAS来实现一些修改操作&#xff0c;也能保证线程安全&#xff08;不需要加锁&#xff09;…...

如何给自己的店做小程序/宝鸡seo培训

这段时间准备做淘宝&#xff0c;但不知道卖什么产品&#xff0c;因此想从一些B2B 网站上扒拉一些产品词下来挨个研究&#xff0c;但一个一个的打开网页查看产品太慢太费事&#xff0c;但想到这些产品词都存在于网页标题上&#xff0c;因此想到了用excel来批量获取网页的标题。经…...

沈阳建设网站费用/百度百家号官网

主成分分析&#xff08;PCA&#xff09;是一种常用的数据降维技术&#xff0c;可以将高维数据转化为低维数据&#xff0c;并保留数据的主要特征。在机器学习和数据分析中&#xff0c;PCA被广泛应用于特征提取、数据可视化和模型训练等领域。本文将介绍如何使用Matlab实现PCA算法…...

本溪市做网站公司/免费推广公司

第1关:单源最短路径 给一个n(1 ≤ n ≤ 2500) 个点 m(1 ≤ m ≤ 6200) 条边的无向图,求 s 到 t 的最短路。 #include <stdio.h> #define INF 2147483647 #define N 2501 int e[N][N]; //邻接矩阵,存储路径长度 int dis[N]; //存储起点到其他各…...

网站文件怎么做/seo营销专员

最近开始学习OpenGL&#xff0c;网上的教程太散乱&#xff0c;于是打算照着红宝书《OpenGL编程指南&#xff08;第七版&#xff09;》来学习。 于是在Mac上搭建一下Demo环境。比较方便的是&#xff0c;OS X上已经装了OpenGL 3.x所以非常简单。 首先&#xff0c;在xcode上建立os…...

建设医院网站ppt/杭州seo渠道排名

sqlserver2005连接远程服务器报错&#xff0c;以前用得好好的。今天上班来了就报错。郁闷&#xff01;&#xff01;&#xff01;转载于:https://www.cnblogs.com/dreamstill/archive/2006/07/21/456793.html...

地方门户网站建设要求/网络客服

单元格的高度自适应原理就是通过内部label的高度变化来增加和减少单元格的高度。 - (UILabel *)label { if(_label nil) { _label [[UILabel alloc] init]; [self.contentView addSubview:_label]; _label.numberOfLines 0; [_label mas_makeConstraints:^(MASConstraintMak…...