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

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...