SpringBoot 入门学习

news2024/11/28 0:37:19

开发环境配置

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: 8888
    servlet:
        context-path: /simple

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

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

参考文档:

springboot快速入门

SpringBoot中Controller用法及传参

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1259406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103C8T6——4路PWM

//main()函数前面的extern TIM_HandleTypeDef htim2;extern TIM_HandleTypeDef htim3;//main()函数内部额外添加的HAL_TIM_Base_Start_IT(&htim2);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);HAL_TIM_PWM_Start(&htim2…

深度学习中小知识点系列(三) 解读Mosaic 数据增强

前言 Mosaic数据增强&#xff0c;这种数据增强方式简单来说就是把4张图片&#xff0c;通过随机缩放、随机裁减、随机排布的方式进行拼接。Mosaic有如下优点&#xff1a; &#xff08;1&#xff09;丰富数据集&#xff1a;随机使用4张图片&#xff0c;随机缩放&#xff0c;再随…

[ CSS ] 内容超出容器后 以...省略

内容超出容器后 以…省略 当前效果 代码 <template><div class"box">有志者&#xff0c;事竟成&#xff0c;破釜沉舟&#xff0c;百二秦关终属楚; 有心人&#xff0c;天不负&#xff0c;卧薪尝胆&#xff0c;三千越甲可吞吴</div> </templa…

【Proteus仿真】【Arduino单片机】蔬菜大棚温湿度控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DHT11温湿度传感器、按键、继电器、蜂鸣器、加热、水泵电机等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD160…

TikTok新媒体战略:数字时代的社交营销

引言 随着数字时代的来临&#xff0c;社交媒体已成为企业推广和品牌建设的关键平台之一。而在众多社交媒体中&#xff0c;TikTok以其独特的短视频形式和庞大的用户基数吸引了无数企业和个人创作者。本文将深入探讨TikTok新媒体战略&#xff0c;探讨在数字时代如何利用这一平台进…

距离向量路由协议——RIP

目录 动态路由动态路由简介为什么需要动态路由动态路由基本原理路由协议的分类 距离向量路由协议RIPv1 VS RIPv2RIP简介RIPv1的主要特征RIPv1的基本配置 VS RIPv2的基本配置RIP配置案例被动接口单播更新使用子网地址 动态路由 动态路由简介 为什么需要动态路由 如果采用静态…

3.3VPWM转24VPWM电路

一、MOS管导通原理。 MOS管的两个重要参数 VGS(th)&#xff1a;开启电压 VGS(off)&#xff1a;预夹断电压 VDS(max)漏源破坏电压 1、MOS管&#xff1a; 当0<VGS<VGS(th),MOS管关断。 当VGS>VGS(th)&#xff0c;VDS>0&#xff0c;NMOS管导通。 VGDVGS-VDS&#xff…

Python实现WOA智能鲸鱼优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

超全超实用行业解决方案合集,覆盖十大行业数据应用需求

现代企业面对复杂的业务需求&#xff0c;对数据分析的需求日益增加。 从实时销售到市场趋势&#xff0c;从客户行为到产品优化&#xff0c;每个环节都依赖于数据支持。然而&#xff0c;传统的数据分析平台常分散在不同系统和团队中&#xff0c;形成数据孤岛&#xff0c;降低了…

Python实现AI助手

目录 1.介绍 2.准备工作 (1)登录百度智能云 (2)创建应用 (3) 获取Key 3.代码实现 4.效果展示 1.介绍 本文将介绍使用python调用百度云千帆大语言模型的API实现一个简单的AI助手,并且将在本文的第三部分贴出完整源码,供学习交流! 如果你觉得本篇文章对你有用,希望你动动宝…

单片机毕设实物买的成品,论文是自己查资料和照着实物写的

单片机毕设实物买的成品&#xff0c;论文是自己查资料和照着实物写的&#xff0c;算学术不端吗&#xff1f; 很多人的想法可能是这样的&#xff1a; 一般来说&#xff0c;毕业论文是独立完成的学术研究&#xff0c;需要表明作者自己的思考和研究成果&#xff0c;应该包括自己的…

2020年09月 Scratch(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 执行下面程序,输入4和7后,角色说出的内容是? A:4,7 B:7,7 C:7,4 D:4,4 答案:B 第2题 执行下面程序,输出是? A:大学 中庸 孟子 论语 B:论语 大学 孟子 中庸 C:大…

steam游戏搬砖新手最容易掉的五大坑

steam搬砖&#xff0c;月入5-8K 进入任何行业&#xff0c;起初都可能看起来很简单&#xff0c;但要稳定获得利润&#xff0c;需要一些努力和理解行业内的思维逻辑。steam搬砖项目有两条路可以选择&#xff1a;一是通过不断踩坑和试错来积累经验&#xff1b;二是进行知识付费&am…

python+feon有限元分析|feon安装

目录 1、查找 2、下载 3、解压 4、安装 Feon是湖北工业大学土木建筑与环境学院教师裴尧尧基于Python开发的一个开源免费的有限元计算框架。这是一个致力于有限元编程教学和有限元理论研究的框架&#xff0c;上手快&#xff0c;可扩展性强&#xff0c;代码开源。 1、查找 …

1998-2021年全国各地级市PM2.5平均浓度数据

1998-2021年全国各地级市PM2.5平均浓度数据 1、时间&#xff1a;1998-2021年 2、指标&#xff1a;省、省代码、市、市代码、年份、均值、总和、最小值、最大值、标准差 3、来源&#xff1a;Washington university Atmospheric Composition Analysis Group 4、范围&#xff…

【JMeter】运行方式

第一种&#xff1a; 使用GUI 操作&#xff1a; 在JMeter界面菜单导航上点击运行按钮 一般用作创建TestPlan和调试脚本增加java堆空间来满足测试环境 第二种&#xff1a;使用CLI(Command Line) 性能测试一般请求量比较大&#xff0c;为了节省资源 CLI参数用法&#xff1a; 字段…

Java开发者的Python快速进修指南:自定义模块及常用模块

自定义模块 我来举一个在Java开发中常用的开发方式作为例子。在我们进行项目开发时&#xff0c;通常会在项目的结构中创建一个util包&#xff0c;用于存放一些工具类。同样&#xff0c;Python也可以采用类似的方式来组织代码结构&#xff0c;让大家更容易理解。 在同目录下 如果…

数据中台具体是怎么解决数据孤岛的?_光点科技

在数字化时代&#xff0c;数据已成为企业的核心资产。然而&#xff0c;由于历史遗留问题、部门壁垒等因素&#xff0c;很多企业面临着“数据孤岛”的问题。数据孤岛是指在一个组织内&#xff0c;数据被分散在不同的系统中&#xff0c;彼此隔离&#xff0c;不能有效整合和利用。…

GWAS 分析模型 | FaST-LMM

GWAS 分析模型 | FaST-LMM FaST-LMM (Factored Spectrally Transformed Linear Mixed Models) 是一个用于进行全基因组关联分析&#xff08;GWAS&#xff09;的模型。与标准混合线性模型相比&#xff0c;FaST-LMM 通过对遗传相似性矩阵进行单次谱分解来减少计算资源消耗并提升运…

智慧城市交通大屏|助力解决城市交通问题

2017年起&#xff0c;数字孪生连续三年被Gartner列入“未来科技十大趋势”&#xff0c;由此可见数字孪生技术正屹立在数字化发展的风口之中。 数字孪生作为物理世界的数字映射&#xff0c;将流程、物体的信息利用数字技术实时映射到系统中&#xff0c;可以对某个设备、某个企业…