当前位置: 首页 > 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 我们可以用这个事件实现每次点击同一个选项都可以触发后台事件 需要注意下最…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...