springboot的学习(一):springboot的基础

ops/2024/11/15 4:13:24/

简介

springboot的基础的知识点的学习总结

springboot

设计目的是为了简化spring应用的初始搭建和开发过程。

简单例子

new project,一般用这个阿里的地址:https://start.aliyun.com/
在这里插入图片描述
点击next,选择jdk版本
在这里插入图片描述
点击next,选择模块
在这里插入图片描述
点击next,填写项目名字
在这里插入图片描述
创建好了项目,还有自动给了简单例子,右键运行DemoApplication启动类。
在这里插入图片描述
在这里插入图片描述
扩展:这个启动类是放到demo包下的,它是会扫描它的上级目录demo下的所有包的,要想扫描到自己写的类,要把类放到启动类的上级目录demo下。

隐藏文件

在这里插入图片描述
项目中有这些用不到的文件,可以隐藏
在这里插入图片描述
在这里插入图片描述

添加不想看到的文件,如HELP.md;*.iml;.idea;点击应用,项目就干净多了
在这里插入图片描述

和spring对比

spring依赖设置繁琐,配置繁琐
springboot简化了依赖配置,简化了常用工程相关配置,内置了服务器

依赖坐标的版本管理

在pom.xml文件中
在这里插入图片描述
由spring-boot-dependencies统一管理依赖坐标的版本,可以避免多个依赖使用相同技术时出现依赖版本的冲突。
也可以继承spring-boot-starter-parent,里面其实还是spring-boot-dependencies

starter

pom.xml中的starter,就是包含了若干个依赖坐标,可以通过这个快速的进行依赖配置。目的是减少依赖配置
在这里插入图片描述
扩展:和parent的区别,parent是所有springboot项目都需要继承的项目,定义了若干个坐标版本号,以达到减少依赖冲突的目的。

引导类

引导类就是application启动类。

 SpringApplication.run(DemoApplication.class, args);

这行代码的运行是启动spring容器,扫描所在包的bean

内嵌Tomcat

原理是将Tomcat服务器作为对象运行,并将该对象交给spring容器管理。
在这里插入图片描述
在这个依赖中包含了Tomcat的依赖了。
如果不想使用Tomcat,可以在pom.xml中使用< exclusions>排除掉Tomcat依赖。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>

rest风格

rest,表现形式状态转换,可以隐藏资源的访问行为,不能通过请求地址知道对资源的操作,简洁。他是通过行为动作(请求方式)区分对资源进行的操作的。
请求方式有:

  1. get:查询
  2. post:新增
  3. put:更新
  4. delete:删除

根据rest风格对资源进行访问称为restful。它是一种约定,不是规范,是可以打破的。

在controller中,可以使用@GetMapping,@PostMapping,@PutMapping,@DeleteMapping来接收请求。
方法中使用@PathVariable来接收请求中的参数,在url路径上要配合{参数名}。
如果有多个参数,就封装成对象,转成json对象,然后controller使用@RequestBody来接收json对象。

例子


package com.christ.demo.demos.web;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/users")
public class BasicController {@GetMapping("/{id}")
public void get(@PathVariable Integer id){System.out.println("select:"+id);
}
@PostMapping
public void add(@RequestBody User user){System.out.println("add" + user.getName());
}
}

postman发送get请求:http://localhost:8080/users/1
在这里插入图片描述
postman发送post请求:http://localhost:8080/users
json格式请求体

{"name":"christ","age":18
}

在这里插入图片描述

配置

springboot的基本配置在resource中的application.properties,application.yaml或application.yml中。
如果三个都存在,优先级:application.properties>application.yml>application.yaml
属性相同会覆盖,不同会补充。
在这里插入图片描述

yml

数据序列化格式
格式:值的前面有一个空格

users:- name: christage: 18- name: jackage: 20
users1:-name: mikeage: 19-name: jhonage: 21users2: [{name: jerry,age: 22},{name: luffy,age: 23}]
value: 111
hobbies: [sing,dance,basketball]

读配置文件的值

可以使用@value注解

package com.christ.demo.demos.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/users")
public class BasicController {@Value("${users[1].name}")private String name;@GetMapping("/getName")
public void readValue(){System.out.println(name);
}
}

可以把所有的属性都封装到一个Environment对象中,使用@Autowired自动装配

package com.christ.demo.demos.web;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/users")
public class BasicController {@Autowiredprivate Environment env;@GetMapping("/getValue")public void readValues(){System.out.println(env.getProperty("value"));
}
}

引用值

localValue: test
referenceValue: ${localValue}

测试类

如果测试类在springboot启动类的包或子包中,可以省略启动类的设置,否则,应该在@springbootTest注解上加上属性class指定启动类。

@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {@Testvoid contextLoads() {}
}

启动类的package
在这里插入图片描述
测试类的package,要在package com.christ.demo或这个的子包下
在这里插入图片描述

前后端数据协议

用于后端和前端进行数据格式的统一。
一般包含code,data,msg。

统一异常处理

使用@RestControllerAdvice和@ExceptionHandler(指定捕获的异常.class)。


http://www.ppmy.cn/ops/94069.html

相关文章

区块链通证系统源码

区块链通证系统是一个基于区块链技术的系统&#xff0c;主要用于实现数字资产的发行、流通和管理。以下是对区块链通证系统功能的详细解释 1、通证发行与管理 发行通证&#xff1a;系统可以根据业务需求&#xff0c;设定通证的发行量、发行方案等&#xff0c;并通过智能合约实…

高清无损,尽在掌握:2024年电脑录屏新标准

随着科技的飞速发展和数字化生活的普及&#xff0c;电脑录屏已经成为了我们日常工作、学习、娱乐中不可或缺的一部分。本文将带你一起探索电脑如何录屏操作。 1.福昕REC大师 链接&#xff1a;www.foxitsoftware.cn/REC/ 这款软件的便捷性令人赞叹不已。其体积小巧&#xff0…

oracle UNPIVOT的使用

Oracle UNPIVOT是一种用于将列转换为行的SQL操作&#xff0c;它允许用户将多个列的数据转换为多行的形式&#xff0c;以便进行更灵活的数据分析和报表生成。以下是关于Oracle UNPIVOT使用的详细解释&#xff1a; 一、基本语法 Oracle UNPIVOT的基本语法如下&#xff1a; SEL…

在Java项目中集成Jackson JSON和YAML处理库

摘要&#xff1a; 本文将指导您如何在Java项目中集成Jackson库&#xff0c;用于处理JSON和YAML数据格式。通过Maven依赖配置&#xff0c;我们将探索如何使用ObjectMapper进行JSON的序列化和反序列化&#xff0c;以及如何使用yamlMapper处理YAML格式的数据。 1. 引言 简要介绍…

自实现的 android.hardware.xxxx@1.0-service 没有开机自启动

问题描述 push android.hardware.xxxx1.0-service 到 /vednor/bin/hw; push ‘android.hardware.xxxx1.0-service.rc’ 到 /vendor/etc/init/; reboot 设备后&#xff0c;xxx 服务没有自动启动。 经检查 rc 文件与同类 service 无差异。 问题分析 直接运行 xxx 服务正常。同…

REST framework-ViewSets学习

ViewSets 文章目录 ViewSets1. 简介2.viewsetviewset操作Introspecting ViewSet actionsMarking extra actions for routing 3.GenericViewSet4.ModelViewSet关于权限设置 5.ReadOnlyModelViewSetViewSet 和 GenericAPIView 1. 简介 Django REST framework 中的 ViewSet 允许将…

加和分数、训练、测试

一、加和所有alignment的分数 1、路线图中 2、l_i只与token有关&#xff0c;有一个专门训练的网络&#xff1b;h_i变化只与null有关 3、distribution生成的概率不受路径影响&#xff0c;只要到达位置概率就是一样的 4、计算alignment分数的总和 &#xff08;1&#xff09;αi…

python 华为od 单词接龙

sd[word,dd,da,dc,dword,d] # 计算出下一个接龙单词 def jl(sd,st):# sd.remove(st)sd list(set(sd))sends list(st)[-1]lg []sd.sort()for i in sd:if i.startswith(sends):lg.append((i, len(i)))if lg[]:return 0,0lg.sort(keylambda x: x[1],reverseTrue)maxlen lg[0][…