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

news2024/11/15 7:30:06

简介

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: christ
    age: 18
  - name: jack
    age: 20
users1:
  -
    name: mike
    age: 19
  -
    name: jhon
    age: 21

users2: [{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 {
    @Autowired
    private 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 {
    @Test
    void contextLoads() {
    }
}

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

前后端数据协议

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

统一异常处理

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

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

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

相关文章

88.SAPUI5 Model Binding的问题-在view更改数据,model却不变

目录 1.背景 2.sap.ui.model.BindingMode sap.ui.model.BindingMode.OneWay sap.ui.model.BindingMode.TwoWay 3.oModel.setDefaultBindingMode 方法说明 execOneWay方法 execTwoWay方法 1.背景 在做一个UI5项目&#xff0c;后台读取sap.ui.model.Model后&#xff0c;把…

Vuex 深度解析 | 面试常问问题案例

Vuex 深度解析 | 面试常问问题案例 Vuex 是 Vue.js 应用程序的状态管理模式和库。它为 Vue.js 应用程序提供了一个集中存储所有组件的共享状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。接下来&#xff0c;我们将深入探讨 Vuex 的核心概念、使用方式、AP…

项目管理高效秘诀:优选软件大公开

国内外主流的 10 款项目管理系统对比&#xff1a;PingCode、Worktile、Asana、Trello、ClickUp、Zoho Projects、Hive、Teambition、飞书、Tapd。 在寻找完美的项目管理工具时&#xff0c;许多团队都面临一个共同的问题&#xff1a;除了已知的Worktile之外&#xff0c;还有哪些…

“从创建到管理,Linux进程编程是你掌握系统资源的金钥匙!“#Linux系统编程之进程【下】

"从创建到管理&#xff0c;Linux进程编程是你掌握系统资源的金钥匙&#xff01;"#Linux系统编程之进程【下】 前言预备知识一、 父进程等待子进程退出&#xff08;一&#xff09;1.1 为啥要等待子进程退出1.2 父进程等待子进程退出并收集退出状态1.3 编程验证僵尸进程…

【47 Pandas+Pyecharts | 杭州二手房数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 过滤数据2.3 行政区处理2.4 地址处理2.5 房屋信息处理2.6 面积处理2.7 楼层处理2.8 年份处理2.9 房价处理2.10 删除不用的列2.11 数据类型转换2.12 查看…

【数学建模】Matlab 编程

MATLAB是美国MathWorks公司自20世纪80年代中期推出的数学软件&#xff0c;具有优秀的数值计算能力和卓越的数据可视化。由于Maltab编程方便&#xff0c;有大量内部函数和工具箱可以使用&#xff0c;作图也 十分方便&#xff0c;因此在数学实验和数学建模竞赛中&#xff0c;我们…

揭秘紧固件分销网络:如何成为结构安全和社会进步的关键支点?

全球产品分销的历史源远流长&#xff0c;早在国际贸易初期就已形成。在紧固件行业中&#xff0c;随着各行业对紧固件需求的不断增长&#xff0c;市场呈现出积极的发展趋势。紧固件在结构、机械、设备及其他众多组件中扮演着至关重要的角色&#xff0c;确保了整个系统的高效运行…

电子家谱族谱在线制作小程序开发

电子家谱族谱在线制作小程序开发 电子家谱在线制作小程序通常会提供一系列的功能来帮助用户创建和维护家谱。这里是一个基于市场上常见的家谱制作小程序的功能列表示例&#xff1a; 基本信息录入&#xff1a; 用户注册与登录个人信息录入&#xff08;姓名、性别、出生日期、照…

隐藏你的环境文件!否则你的云存储数据可能会被盗并被勒索

网络犯罪分子正在侵入组织的云存储容器&#xff0c;窃取其敏感数据&#xff0c;并且在一些情况下&#xff0c;受害组织还会向他们支付费用&#xff0c;以确保他们不泄露或出售被盗数据。 研究人员表示&#xff1a;“此次活动背后的攻击者可能利用了广泛的自动化技术来成功且快…

车载网络测试实操源码_使用CAPL脚本对CAN总线上的错误帧进行实时监控

系列文章目录 车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件 车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter、CRC、周期、错误帧进行实时监控 车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文 车载网络测试实操源码_使用CA…

企业办公室电脑监控软件有什么好用的推荐(闭眼也可入手)

“工欲善其事&#xff0c;必先利其器。” 在今日之商业战场&#xff0c;企业之兴衰&#xff0c;不仅关乎战略眼光与市场布局&#xff0c;更在于内部管理之精细与效率。 信息技术的飞速发展&#xff0c;企业办公室电脑监控软件应运而生&#xff0c;成为了现代企业管理的得力助…

OpenCV Python 图像处理入门

OpenCV入门 OpenCV&#xff1a;轻量、高效、开源。最广泛使用的计算机视觉工具。 下面涉及图片的读取&#xff0c;RGB彩色通道&#xff0c;区域裁剪&#xff0c;绘制图形和文字&#xff0c;均值滤波&#xff0c;特征提取&#xff0c;模板匹配&#xff0c;梯度算法&#xff0c…

黑马Java零基础视频教程精华部分_19_lambda表达式

系列文章目录 文章目录 系列文章目录一、函数式编程二、Lambda表达式的标准格式三、Lambda表达式的省略写法 一、函数式编程 函数式编程(Functional programming)是一种思想特点。 之前的面向对象:先找对象&#xff0c;让对象做事情。如下图所示&#xff0c;这样会有点小麻烦。…

(一)基于自组织结构的多目标粒子群优化算法(SMOPSO)的无人机三维路径规划(MATLAB代码)

一、无人机多目标优化模型 无人机三维路径规划是无人机在执行任务过程中的非常关键的环节&#xff0c;无人机三维路径规划的主要目的是在满足任务需求和自主飞行约束的基础上&#xff0c;计算出发点和目标点之间的最佳航路。 1.1路径成本 无人机三维路径规划的首要目标是寻找…

理解Pytorch中的collate_fn函数

PyTorch中的DataLoader是最常用的类之一&#xff0c;这个类有很多参数&#xff08;14 个&#xff09;&#xff0c;但大多数情况下&#xff0c;你可能只会使用其中的三个&#xff1a;dataset、shuffle 和 batch_size。其中collate_fn是比较少用的函数&#xff0c;这对初学者来说…

2024年国家数据局第一批20个“数据要素×”典型案例解析

国家数据局首批20个“数据要素”典型案例解析 1、简介1.1 背景简介1.2 典型案例分类 2、案例解析2.1 工业制造领域案例1&#xff1a;数据要素驱动适应多式联运需求的运输装备协同制造案例2&#xff1a;打造工业数据空间 赋能产业链上下游发展 2.2 现代农业领域案例3&#xff1a…

07一阶电路和二阶电路的时域分析

一阶电路和二阶电路的时域分析 时域分析、频域分析、复频域分析本应该在信号与系统&#xff0c;或者数字信号处理这一章节里面进行处理的。 但在电路理论中也有这些知识&#xff0c;那就要好好掌握一下&#xff0c;打个底。详细细致的部分放到信号与系统里面去掌握

Spring Web MVC入门(中)

1. 请求 访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要 是学习如何传递参数到后端以及后端如何接收. 传递参数, 咱们主要是使⽤浏览器和Postman来模拟&#xff1b; 1.1 传递单个参数 接收单个参数&#xff0c;在Spring MV…

七段S型加减速算法原理及其多种形状仿真

1、基本7段S型&#xff1a; 七段S型加减速的位置、速度、加速度、加加速度曲线如下图所示。 加加速度&#xff1a; 加速度&#xff1a; 速度&#xff1a; 位置&#xff1a; 以上是7段S型加减速的最基本公式&#xff0c;在实际应用中还需要考虑到起始和终止速度大于匀速速度的情…

【JavaSE】解读Java中的toString方法

前言&#xff1a; 在Java中&#xff0c;toString方法来自java.lang.Object 类&#xff0c;然后所有对象都继承该Object 类。默认情况下&#xff0c;它的作用是返回对象的字符串表示形式。在实际开发中&#xff0c;重写 toString() 方法可以帮助我们以更易读的形式输出对象信息&…