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

SpringBoot 入门学习

开发环境配置

JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2

框架介绍

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简而言之,Spring Boot 通过提供默认配置的方式整合了所有的框架,让我们可以更加简单、快速、方便地构建应用程序。

创建 Spring Boot 项目

首先使用 IDEA 创建普通的 maven 项目,项目创建完成,依赖下载完毕后,修改 pom 文件,增加 Spring Boot 依赖,如下所示:

<!--Spring Boot的依赖管理-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><!--web 对应的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

spring-boot-starter-parent 是 Spring Boot 项目用于管理各类组件依赖,它仅仅是管理版本的,并不会导入依赖,所以还需要引入 web 相关依赖,这里无需对 web 依赖填写版本,因为已引入 Spring Boot 版本 2.6.2,在它的统一pom 文件中已经对所有的经常使用的模块做了统一的依赖管理。

创建启动类

创建启动类,例如 DemoApplication,并对该启动类增加 Spring Boot 注解及 main 方法,如下:

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

运行 main 方法,最简单的 Spring Boot 服务即正常启动,默认的服务地址与端口号为:http://localhost:8080

Controller 开发

Controller 介绍

Controller 是 MVC(Model-View-Controller)架构模式中的一部分,用于处理用户请求和控制应用程序的行为,当用户发送请求时,应用程序的前端控制器(如 Servlet 或 Spring MVC 框架)会将请求路由到适当的 Controller 方法,进行相关处理。Controller 分为 @Controller 、 @RestController,两者主要区别:

  • @RestController 相当于 @Controller 和 @ResponseBody的组合,可以直接返回 JSON、XML 等数据格式的响应结果

  • @Controller 一般用来处理视图,需要配合模板引擎返回视图

  • @RestController 不能使用视图解析器返回视图,只能返回数据格式的响应结果

最简单的 Controller:

@RestController
//定义Controller路径
//@RequestMapping("my")
public class MyController {@GetMapping("test")//@RequestMapping(value ="/test",method = RequestMethod.GET)public String helloWorld(){return "hello world:"+new Date();}}

注解说明

创建 MyController 类,并对该类增加  @RestController 注解,对该类增加自定义方法,并对自定义方法添加注解

类的注解:@RestController、@RequestMapping("my")

@RestController 上文作介绍,添加该注解后即表明该类可以用来处理用户请求,当用户发送请求时,前端控制器会将请求路由到适当的 Controller 方法,进行相关处理,如果希望普通的 Java 类正常处理用户请求,该注解为必须项

@RequestMapping("my") 是对该 Controller 类增加的自定义路径,正常的 web 项目一般会有多个模块,为了对不同的模块进行区分,会对不同的模块服务访问细分路径。例如:该 Controller 类

  • 未增加 @RequestMapping 注解时,服务访问地址为:http://localhost:8080/test

  • 增加 @RequestMapping 注解时,服务访问地址为:http://localhost:8080/my/test

方法的注解:@RequestMapping、@GetMapping

上文示例中的自定义方法 helloWorld 如果想被前端控制器匹配到,需要增加方法注解,@RequestMapping 或@GetMapping,@GetMapping 相当于 @RequestMapping ,其中 method 为 GET,属于该注解的简化用法

@GetMapping("test")  等价于 @RequestMapping(value ="/test",method = RequestMethod.GET)

其他几类请求(POST、DELETE 等)同理,例如 POST请求:

@PostMapping("seedInfo") 等价于 @RequestMapping(value = "/seedInfo",method = RequestMethod.POST)

value 值是该自定义方法是的服务访问路径,如:http://localhost:8080/my/seedInfo ,用来与其他自定义方法区分

启动服务,在浏览器或 PostMan 中访问以上服务,即可正常响应返回信息

请求携带参数

对于自定义方法,我们可能会处理一些实体类,例如:

public class User {private String name;private int age;private String gender;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}
}

自定义方法:

@GetMapping("seedInfo")
//@PostMapping("seedInfo")
public User seedInfo(User user){return user;
}

对于 GET 请求,请求携带参数的方式如:http://localhost:8080/my/seedInfo?name=xiaohong&age=10&gender=girl

服务启动后,使用 Postman 访问以上请求,相应信息如下:

如果请求携带的参数没有匹配到所需的参数,所需的参数将返回该类型的默认值,例如不携带参数 age、gender:

 POST 请求携带参数,此时自定义方法的注解应修改为 @PostMapping ,否则请求会 405 报错,正常修改后,请求如下:

POST 请求未包含所需参数,服务响应返回值同理返回默认值

Spring Boot 配置文件

老版本的 Spring Boot 项目使用 application.properties 保存配置信息,新版本的使用 application.yml 保存配置信息    ,application.yml 文件保存 src/main/resources 目录中,如果没有该文件,可以先新建该文件。在 在 IDEA 中也可安装、使用插件 Convert YAML and Properties Flie 将 application.properties 转换为 application.yml

右键点击 application.properties 文件,选择最上方的插件处理按钮即可完成转换

application.yml 配置信息可以配置非常多的信息,这里只做最简单的使用,更多是使用信息可依据项目需求,网络查找使用方式。这里我们如果希望修改 web 服务的路径及自定义端口,可以这样配置:

server:port: 8888servlet:context-path: /simple

以上文的请求为例:http://localhost:8080/my/seedInfo 需要修改为 http://localhost:8888/simple/my/seedInfo ,才能正常访问请求:

 开源项目地址:GitHub - liuweiqiang2016/SpringBootDemo: SpringBoot 框架入门学习

参考文档:

springboot快速入门

SpringBoot中Controller用法及传参

相关文章:

SpringBoot 入门学习

开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2 框架介绍 Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置…...

高等数学零基础篇复习笔记

预备章 零基础高等数学入门知识 第一节 集合、运算与关系 第二节 三角函数与反三角函数 三角函数的公式 反三角函数 第三节 常见不等式及数列 划重点 第一章 函数、极限与连续 第一节 函数及函数的初等特性 特殊函数 反函数 函数的初等特性 ①有界性 ②奇偶性 偶函数图像…...

CentOS 系列:CentOS 7文件系统的组成

CentOS 7文件系统的组成 文件系统的组成Linux的一些重要目录文件和目录名主机名文件权限绝对路径和相对路径绝对路径相对路径 文件系统的组成 一切从根开始 文件路径中只有第一个/是根目录&#xff0c;后面的/是分隔符 文件名区分大小写 除斜线(/)以外&#xff0c;其他的字符…...

String转Date,Date转String

源码&#xff1a; Date currentTime new Date();System.out.println("currentTime:"currentTime);SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString formatter.format(currentTime);System.out.println(&quo…...

大坝安全监测的内容及作用

大坝安全监测是指对大坝水雨情沉降、倾斜、渗压以及大坝形状特征有效地进行监测&#xff0c;及时发现潜在的安全隐患和异常情况&#xff0c;以便大坝管理人员能够做出科学决策&#xff0c;以确保大坝安全稳定运行。 大坝安全监测的主要内容 1.表面位移监测&#xff1a;监测大坝…...

Maven——Maven发展历程

本帖主要介绍以下内容&#xff1a; 什么是Maven为什么需要MavenMaven与极限编程 1、什么是Maven Maven这个词可以翻译为“知识的积累”&#xff0c;也可以翻译为“专家”或“内行”。Maven是跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目&#xff0c;Mav…...

Python与设计模式--迭代器模式

23种计模式之 前言 &#xff08;5&#xff09;单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、&#xff08;11&#xff09;策略模式、责任链模式、命令模式、中介者模…...

【NGINX--8】HTTP/2

1、基本配置 想要利用 HTTP/2。 在 NGINX 服务器上启用 HTTP/2&#xff1a; server {listen 443 ssl http2 default_server;ssl_certificate server.crt; ssl_certificate_key server.key;# ... }详解 要启用 HTTP/2&#xff0c;您只需要将 http2 参数添加到 listen 指令即可…...

webpack项目工程初始化

一、初始化项目 默认系统已经安装node //初始化 pnpm init//安装webpack pnpm i -D webpack webpack-cli 新建一个index.html的入口文件 新建一个src文件存放js代码&#xff0c;src里面新建一个index.js package.josn配置打包命令 {"name": "webpack-cs&q…...

08-学成在线项目中统一异常处理的规范

项目中的异常处理 规范异常类型 在Service类的业务方法中有很多的参数合法性校验,当请求参数不合法的时候会抛出异常,但此时异常信息只会在控制台输出,前端界面并不会提示用户 实际开发中前端和后端需要做一些约定: 一般将错误提示信息统一以json格式返回给前端,以HTTP状态码…...

解析生效探测方法

linux dig命令 1.最常用的查询命令 dig baidu.com2 . 根据记录类型进行查询&#xff0c;比如MX&#xff0c;CNAME&#xff0c;NS&#xff0c;PTR等&#xff0c;只需将类型加在命令后面即可。 dig a.shifen.com ns3 . 指定域名DNS服务器测试解析是否生效的命令&#xff0c;以…...

【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷11

单选题 1、在阅读文章和接受信息时注意区分事实和观点十分重要。事实&#xff08;或称为命题&#xff09;不同于观点的一个主要特征是 A、可以被证实或证伪 B、是准确无误的 C、是正式的表达 D、表达了个人看法 答案&#xff1a;A 2、现代意义的知识产权是在多数国家都受…...

视频集中存储/磁盘阵列EasyCVR平台黑名单异常解决步骤是什么?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

Spring Boot + MyBatis-Plus实现数据库读写分离

文章目录 1. 引言2. MyBatis-Plus简介3. 准备工作4. 配置数据源5. 配置MyBatis-Plus6. 创建实体类和Mapper接口7. 编写Service8. 控制器层9. 测试10. 数据库读写分离的原理11. 拓展11.1. 动态数据源11.2. 多数据源事务管理11.3. 多租户支持 12. 总结 &#x1f389;Spring Boot …...

数据同步异常处理,数据同步重试机制(Java)

一、应用场景 在数据同步时&#xff0c;偶尔会出现代码异常之外的问题。例如网络异常、服务器断电… 如果在以上异常片段中&#xff0c;原始数据库新增了一批数据&#xff0c;同步数据库则会丢失这部分数据 二、实现思路 为了解决以上问题&#xff0c;保证原始数据库操作的每…...

STM32F407-14.3.5-01捕获_比较通道

捕获/比较通道 每一个捕获/比较通道都是围绕着一个捕获/比较寄存器(包含影子寄存器) 包括: 捕获的输入部分(数字滤波、多路复用和预分频器)&#xff0c; 输出部分(比较器和输出控制)。 中文参考手册中框图分成了三大模块, 把框图合并成了一个整体,以便更好的理解捕获输…...

【Python 训练营】N_12 打印菱形图案

题目 打印菱形图案 分析 先把图形分成两部分来看待&#xff0c;前四行一个规律&#xff0c;后三行一个规律&#xff0c;利用双重for循环&#xff0c;第一层控制行&#xff0c;第二层控制列。 答案 # 方法一 for i in range(4):block **(2*i1)print({:^7}.format(block))…...

risc-v异常处理

异常与中断的关系 中断和异常都为异常&#xff0c;分为&#xff1a; 同步异常&#xff1a;IO&#xff0c;illegal, page fault&#xff0c;miss_aligh 等来自处理器内部的发生的异常。异步异常&#xff08;中断&#xff09;&#xff1a;鼠标&#xff0c;键盘&#xff0c;Time…...

SQL注入-数据库基础/SQL语法

目录 一&#xff0c;数据库概述 1.1 数据库 1.2 了解 ACID 理论 1.3 识别数据库 二&#xff0c;SQL 语法基础 三&#xff0c;SQL语句实例 3.1 SQL基础语句 3.2 SQL高级语句 四&#xff0c;基于SQL注入理解语法/函数 4.1 语法 4.2 函数 五&#xff0c;目录数据库info…...

Blazor Select 实现点击一次选项触发一次后台事件

Blazor的官方案例中&#xff0c;Select组件只有两个事件 1、OnSelectedItemChanged 每次选项的时候改变触发&#xff0c;如果你点击同一个选项是不会触发后台的方法的 2、OnBeforeSelectedItemChange 我们可以用这个事件实现每次点击同一个选项都可以触发后台事件 需要注意下最…...

嵌入式实时异步编程库:FreeRTOS轻量级Job调度框架

1. 项目概述Job是一个面向嵌入式实时系统的轻量级异步编程库&#xff0c;专为 FreeRTOS 环境深度定制。它并非通用 C 异步框架的简单移植&#xff0c;而是基于裸机资源约束与实时性要求重构的模块化任务调度抽象层。其核心设计哲学是&#xff1a;以最小运行时开销实现确定性异步…...

OpenClaw模型热切换:Qwen3.5-9B-AWQ-4bit与其他模型动态调用

OpenClaw模型热切换&#xff1a;Qwen3.5-9B-AWQ-4bit与其他模型动态调用 1. 为什么需要模型热切换 去年冬天&#xff0c;我正用OpenClaw处理一批产品截图的分析任务。当时只配置了Qwen3.5-9B-AWQ-4bit这一个模型&#xff0c;结果发现——简单图片描述消耗了过多算力&#xff…...

R语言临床数据挖掘的7个致命陷阱:92%的医学研究者在第3步就失败了?

第一章&#xff1a;临床数据挖掘的医学伦理与R语言合规性基础临床数据挖掘在推动精准医疗与公共卫生决策中具有不可替代的价值&#xff0c;但其前提是严格遵循医学伦理原则与数据治理规范。世界医学会《赫尔辛基宣言》与我国《涉及人的生物医学研究伦理审查办法》均强调&#x…...

C#实战:基于CIP协议高效读写罗克韦尔ControlLogix PLC数据

1. 从零理解CIP协议与ControlLogix PLC 第一次接触罗克韦尔PLC时&#xff0c;我被CIP协议这个概念卡住了三天。后来才发现&#xff0c;它就像工业设备间的"普通话"——Common Industrial Protocol&#xff08;通用工业协议&#xff09;的缩写。这个协议最妙的地方在于…...

终极LyricsX歌词配置指南:解锁macOS多源歌词同步的完整方案

终极LyricsX歌词配置指南&#xff1a;解锁macOS多源歌词同步的完整方案 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX LyricsX作为macOS平台上功能最强大的歌词同步应用&#xff0c;通过…...

鸿蒙应用开发实战:5分钟搞定versionCode、versionName等关键信息获取

鸿蒙应用开发实战&#xff1a;5分钟掌握应用关键信息获取技巧 在鸿蒙应用开发过程中&#xff0c;获取应用的版本信息、包名等关键数据是开发者的高频需求。无论是用于版本更新检测、应用内展示&#xff0c;还是配合后端接口校验&#xff0c;这些信息都扮演着重要角色。本文将带…...

多轮对话提示词编写技巧

多轮对话提示词编写技巧比较好的提示词语写法是&#xff0c;不需要告诉大模型每轮对话怎么说&#xff0c;只需要告诉大模型我们业务步骤或者流程&#xff0c;需要注意什么&#xff0c;常见问题的答案&#xff08;faq&#xff09;&#xff0c;让大模型自己组织语言去对话。常用技…...

**Serverless架构下的无服务器框架实战:从零搭建高可用函数计算平台**

Serverless架构下的无服务器框架实战&#xff1a;从零搭建高可用函数计算平台 在现代云原生开发中&#xff0c;Serverless&#xff08;无服务器&#xff09;技术已成为构建弹性、低成本、高并发应用的核心选择之一。它彻底解耦了业务逻辑与底层基础设施管理&#xff0c;让开发者…...

Python数据可视化指南

Python数据可视化指南 后端转 Rust 的萌新&#xff0c;ID "第一程序员"——名字大&#xff0c;人很菜&#xff08;暂时&#xff09;。正在跟所有权和生命周期死磕&#xff0c;日常记录 Rust 学习路上的踩坑经验和"啊哈时刻"&#xff0c;代码片段保证能跑。…...

挂起、阻塞、锁和cpu占用

Thread.sleep() 和 Object.wait() 在 Java 多线程编程中&#xff0c;Thread.sleep() 和 Object.wait() 都能让线程暂停执行&#xff0c;但它们的目的机制和使用场景有本质区别。‌核心区别总结‌‌所属类不同‌sleep() 是 ‌Thread 类的静态方法‌&#xff0c;作用于当前线程。…...