当前位置: 首页 > news >正文

Java框架(九)--Spring Boot入门(1)

SpringBoot 2.x入门简介

学前基础

Maven
Spring
MVC理念

开发环境

Spring Boot官网版本介绍
https://spring.io/projects/spring-boot#learn
在这里插入图片描述
我们点击 Reference Doc. ,再点击Getting Started,就可以看到官网系统环境说明了
在这里插入图片描述
官网系统环境说明
在这里插入图片描述

Spring与SpringBoot

Spring官网
https://spring.io/
在这里插入图片描述
所有的Spring的生态体系所有的框架的底子都依赖于Spring的。
SpringBoot其实是一套简化的Spring技术栈的开发的脚手架。通过SpringBoot的使用,可以把相应组件都可以引入到项目里面来,使得我们更多的精力关注到业务。

Spring Boot核心特点

开箱即用:之前开发SSM系统的时候,想启动系统就配置Tomcat、项目打包到对应的目录等,这些在Spring Boot里都不需要再做了,它是可以非常轻松的被独立创建起来的,直接启动main函数就可以启动起来,因为Tomcat也被内嵌在其中。
约定优于配置:很多项目都有默认配置,Web端口号默认就是8080,像这些配置大家都是约定俗成的,在开发环境直接遵守这个配置就可以了,还方便团队协作。像这样的配置,对于Spring Boot来说就非常良好的约定,只需要遵守,不再需要重复的配置,或者只需少量的配置即可。Spring Boot把这条核心特点运用的淋漓尽致,告别了各种各样的配置,使得Spring Boot非常简单易用和快速上手。

MVC模式

Model 模型层:存取数据的对象,一般来说统称为JavaBean、Entity、POJO类等。它也可以有相应的逻辑的,在数据变化的时候,在控制器Controller 里面的数据变更。本质上可以理解为是一个数据对象,这个数据对象可以是从数据库里面读取出来进行封装,也可以是从前端(H5、安卓、小程序等)传过来的一个对象。
View 视图层:模型要展示的内容,其实也就是可数据化、要可视、要可以被展示的渲染内容。比如早期的jsp , Freemarker ,又或者后面要接触的 Thymeleaf 等等。
Controller 控制层:也可以叫做控制器。控制器是作用于模型和视图之上的,主要控制数据流向模型。并且,在数据变化的时候,也可以去控制里面的内容,控制对象中封装的数据去更新到视图里面。使得视图和模型可以两两分开进行解耦。简而言之,可以在控制器里面去实现业务逻辑,可以接受来自视图层的数据对象,并且加以处理,也可以对数据库读取后的数据处理后,再反馈给视图层。
在这里插入图片描述
MVC模式是一种通用的web开发模式,不管是在以前还是在现在,它一直都是存在的,只不过技术框架在变更,但是它的本质还是不变的。

Struts1/2 + Spring + Hibernate 早期的框架组合SSH
SpringMVC + Spring + MyBatis 后面非常主流的框架SSM
SpringBoot + Spring + MyBatis(JPA/Hibernate) 现在的主流框架

SpringBoot 版本标签

GA:General Availability发布版本,面向大众的,可用的稳定版本,特点为功能完整且非常的稳定,一旦发布后代码内容不会轻易更改。推荐选择这个版本的其中一个。
CURRENT:最新的GA版本。
SNAPSHOT:快照,还不稳定,可能随时会被修改。
PRE:尝鲜版本,或叫预发布版本,提供给开发人员使用,但是不推荐在生产环境中使用。
在这里插入图片描述

通过官网Initializr构建SpringBoot

浏览器访问start.spring.io并按图配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成完项目解压并用IDEA打开(依次点击File->open并选择解压好的项目文件即可)
在这里插入图片描述
其中SpringBootLearnApplication为启动类,也是应用程序的入口类,它的位置不可随意改动。
启动类需要放在根包路径下,因为他会默认扫描Contoller和Service以及Mapper等一些相关的组件,扫描完了之后,会放入到spring/springboot的容器中。

通过IDEA构建基于Maven的SpringBoot

打开IDEA依次点击File->new->Project然后按下图配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用IDEA生成比官网更简便。

在com.ql.springbootlearn.controller包下创建HelloController.java

package com.ql.springbootlearn.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;//@Controller
@RestController
public class HelloController {@RequestMapping("hello")//@ResponseBodypublic String hello(){return "Hello World~~";}
}

其中@RestController注解为在普通的Controller注解基础上有RESTful能力,相当于@Controller与@ResponseBody的结合。

运行启动类,在浏览器访问http://localhost:8080/hello
在这里插入图片描述

@RequestMapping与Postman的使用

除了@RequestMapping还有@GetMapping、@PostMapping、@PutMapping、@DeleteMapping四种遵循了REST规范的请求注解。
一般来说查询使用@GetMapping,对于保存使用@PostMapping,对于修改使用@PutMapping,对于删除使用@DeleteMapping,这是一种强规范。如果使用弱规范,@GetMapping使用与查询,@PostMapping使用与增删改。

除了Get请求,其他请求的测试就无法使用浏览器地址栏测试了,所以推荐使用Postman工具。
我们可以把HelloController的方法请求注解改为PostMapping并重启项目

    @PostMapping("hello")public String hello(){return "Hello World~~";}

再浏览器访问就找不到路由
在这里插入图片描述
可以打开Postman访问请求
在这里插入图片描述

SpringBoot 启动器starter依赖管理

我们打开pom.xml可以看到有个parent的依赖,它是引入了父工程SpringBoot(启动器starter),它里面包含了很多SpringBoot的子工程。在这里插入图片描述
我们可以把鼠标放到spring-boot-starter-parent上,然后按住Ctrl点击打开。
在这里插入图片描述
再按住Ctrl点击spring-boot-dependencies打开。
在这里插入图片描述
所以说spring-boot-starter-parent帮我们定义了自带的一些jar包,在需要的时候直接引用就可以了,而且它们的版本也不需要再写一遍,都已经定义好了,而且都是现阶段最佳最稳定的匹配的版本。当然想要使用其他的版本的话,在pom.xml里重写并指定需要使用的版本即可。

我们以前在开发项目的时候,引入某个框架就会这个框架和他的相关依赖的坐标都引入的pom.xml文件里,并指定各个依赖的版本。当我们使用了SpringBoot的时候,他帮我们做了统一,我们只需要引入这个框架的starter,就会自动的把相关技术栈相关依赖都统一的引入到我们的项目里面来,我们不再需要写这些相关依赖的坐标和版本。这使得我们pom.xml文件看起来精简了很多,提高了我们的可读性,并且他们的冗余度也不会很多。这样实现了我们一站式的开发,我们对jar包的管理方式更加的方便。

SpringBoot官方的starter依赖
在这里插入图片描述

SpringBoot的yml配置文件

在项目src/main/resources目录下创建application.yml文件。

server:port: 8090

这个是由官方所提供的SpringBoot核心配置文件。并把HelloController的方法请求注解改为GetMapping。

    @GetMapping("hello")public String hello(){return "Hello World~~";}

我们启动项目,在浏览器访问http://localhost:8090/hello
在这里插入图片描述
配置文件生效。

SpringBoot项目配置文件格式有两种:
properties

environments.dev.url=http://ql.com
environments.dev.name=Developer

yml:分层级,冒号后需要空格

environments:dev:url: http://ql.comname: Developer

每一层有个Tab缩进,大小写敏感,相同的部分只会出现一次。

官方文档上还有很多配置的说明。
在这里插入图片描述

bootstrap.yml配置文件

SpringBoot里有两种配置文件,一个是application.yml,另一个是bootstrap.yml。bootstrap.yml是一种启动级别的,主要用于处理额外的资源配置加载配置信息。

上下文对象: application vs bootstrap
加载优先级: bootstrap > application
常用性: application.yml > bootstrap.yml

application.yml和bootstrap.yml都会用同一个SpringBoot容器环境。bootstrap.yml里面相关的属性是不会被覆盖的。

使用场景
application.yml主要用于springboot项目的配置。
bootstrap.yml 在SpringCloud里有个配置中心,需要加载外部的配置,就需要用到bootstrap.yml。还有加密解密、固定参数等场景也用到bootstrap.yml。

devtools 自动重启实现

打开pom.xml文件,引入devtools组件

		<!--springboot 提供的开发者工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency>

启动项目,在浏览器访问http://localhost:8090/hello
在这里插入图片描述
我们修改HelloController.java中方法为

@GetMapping("hello")public String hello(){return "Hello SpringBoot~~";}

然后依次点击IDEA菜单栏的Build=>Build Project
在这里插入图片描述
再次刷新浏览器就会自动加载更新的内容。
在这里插入图片描述
devtools 只会Java类代码的修改后能自动编译,如果涉及到资源配置的修改的话就无法自动重启了。
如果是项目已经做大了就不推荐这个组件了。

依赖注入与控制反转的实现

在com.ql.springbootlearn.pojo包下创建Stu.java实体类

package com.ql.springbootlearn.pojo;public class Stu {public String name;public Integer age;public Stu(String name, Integer age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

然后在com.ql.springbootlearn.config包下创建SpringBookConfig.java配置类

package com.ql.springbootlearn.config;import com.ql.springbootlearn.pojo.Stu;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SpringBookConfig {@Beanpublic Stu stu(){return new Stu("Jack", 20);}
}

其中@Configuration注解为了说明当前类为配置类,加上这个注解后会被容器扫描到。该注解和@Controller、@Service、@Repository、@Component等注解同等作用,只是根据场景以及类的业务选择使用即可。

然后在HelloController.java里注入Stu类

    @Autowiredprivate Stu stu;@GetMapping("getStu")public Object getStu(){return stu;}

运行项目,浏览器访问http://localhost:8090/getStu
在这里插入图片描述

SpringBoot自定义属性资源配置

在src/main/resources目录下创建MyConfig.properties属性文件

user.username=Tom
user.age=21
user.sex=

然后在com.ql.springbootlearn.pojo包下创建MyConfig.java类

package com.ql.springbootlearn.pojo;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "user")
@PropertySource(value = "classpath:MyConfig.properties", encoding = "utf-8")
public class MyConfig {public String username;public Integer age;public String sex;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

其中@ConfigurationProperties必须配置属性前缀prefix = “user”。另外引入这个注解后会在编辑器上方报一个Spring Boot Configuration Annotation Processor not found in classpath
我们只需要在pom.xml文件引入一个配置处理器依赖即可

		<!--SpringBoot配置处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></dependency>

然后在HelloController.java注入该配置类

    @Autowiredprivate MyConfig myConfig;@GetMapping("getMyConfig")public Object getMyConfig(){return myConfig;}

运行项目,浏览器访问http://localhost:8090/getMyConfig
在这里插入图片描述
注意:出现中文乱码的,设置下IDEA编码
在这里插入图片描述

在yml中实现自定义配置与表达式

打开application.yml文件添加以下内容

server:port: 8090app:name:xxx:yyy:zzz: abcself:custom:sdkSecrect: abc123host: https://www.ql.comport: ${server.port}

然后在HelloController.java中引用

    @Value("${self.custom.sdkSecrect}")private String sdkSecrect;@Value("${self.custom.host}")private String host;@Value("${self.custom.port}")private String port;@Value("${app.name.xxx.yyy.zzz}")private String xyz;@GetMapping("getYmlConfig")public Object getYmlConfig(){return host+":"+port+"/"+xyz+"/"+sdkSecrect;}

运行项目,浏览器访问http://localhost:8090/getYmlConfig
在这里插入图片描述

实现自定义的启动logo

在src/main/resources/static目录引入图片
在这里插入图片描述
然后在application.yml中添加

spring:banner:image:location: classpath:static/banner.pngpixelmode: text

maven clean项目后,重新启动项目
在这里插入图片描述
控制台就看到设置的logo了

图片转换成文本的网站
https://degraeve.com/img2txt.php
在这里插入图片描述
然后输入图片资源地址,点击ASCIIFY生成
在这里插入图片描述
就可以生成文本,保存下来。
在这里插入图片描述
然后修改application.yml

spring:banner:location: classpath:static/banner.txt
#    image:
#      location: classpath:static/banner.png
#      pixelmode: block

maven clean项目后,重新启动项目
在这里插入图片描述
当然,还是这个经典。
在这里插入图片描述

相关文章:

Java框架(九)--Spring Boot入门(1)

SpringBoot 2.x入门简介 学前基础 Maven Spring MVC理念 开发环境 Spring Boot官网版本介绍 https://spring.io/projects/spring-boot#learn 我们点击 Reference Doc. &#xff0c;再点击Getting Started&#xff0c;就可以看到官网系统环境说明了 官网系统环境说明 Sp…...

2023年第四届“华数杯”数学建模思路 - 案例:随机森林

## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff1f; 随机森林属于 集成学习 中的 Bagging&#xff08;Bootstrap AGgregation 的简称&#xff09; 方法。如果用图来表示他们之…...

Redis中缓存穿透、击穿、雪崩以及解决方案

Redis中缓存穿透、击穿、雪崩以及解决方案 Redis作为一个高效的内存数据库&#xff0c;提供了缓存能力使得我们能够快速访问数据。然而&#xff0c;在使用Redis作为缓存时&#xff0c;我们可能会面临缓存穿透、缓存击穿和缓存雪崩的问题。接下来&#xff0c;我将详细解释这些现…...

系统架构设计师-软件架构设计(6)

目录 一、物联网分层架构 二、大数据分层架构 三、基于服务的架构&#xff08;SOA&#xff09; 1、SOA的特征 2、服务构件与传统构件的区别 四、Web Service&#xff08;WEB服务&#xff09; 1、Web Services 和 SOA的关系 五、REST(表述性状态转移) 六、ESB&#xff08;…...

Knife4j系列--解决不显示文件上传的问题

原文网址&#xff1a;Knife4j系列--解决不显示文件上传的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍使用Knife4j时无法上传文件的问题。 问题复现 依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-…...

深入学习Mysql引擎InnoDB、MylSAM

目录 一、什么是MySQL 二、什么是InnoDB 三、什么是MyISAM 四、MySQL不同引擎有什么区别 一、什么是MySQL MySQL是一种广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是由瑞典MySQL AB公司开发并推广&#xff0c;后来被Sun Microsystems收…...

第七章:SpringMVC中

第七章&#xff1a;SpringMVC中 7.1&#xff1a;SpringMVC的视图 ​ SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户SpringMVC视图的种类很多&#xff0c;默认有转发视图和重定向视图。 ​ 当工程引入jstl的依赖&…...

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改&#xff0c;而其中数据的查询是使用最多&#xff0c;也…...

Electron 开发,报handshake failed; returned -1, SSL error code 1,错误

代码说明 在preload.js代码中&#xff0c;暴露参数给渲染线程renderer.js访问&#xff0c; renderer.js 报&#xff1a;ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说&#xff0c;跨进程传递消息&#xff0c;这意味…...

知识区博主转型——兼做知识区和改造区博主!!!!!

想脱单的进来&#xff0c;一起交流如何能脱单&#xff01;&#xff01;&#xff01; 为什么——我太羡慕有对象的人了哭死&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好&#xff…...

Resnet与Pytorch花图像分类

1、介绍 1.1数据集介绍 flower_data├── train│ └── 1-102&#xff08;102个文件夹&#xff09;│ └── XXX.jpg&#xff08;每个文件夹含若干张图像&#xff09;├── valid│ └── 1-102&#xff08;102个文件夹&#xff09;└── ─── └── XXX.jp…...

【NLP概念源和流】 03-基于计数的嵌入,GloVe(第 3/20 部分)

接续上文 【NLP概念源和流】 02-稠密文档表示(第 2/20 部分)...

【React】关于组件之间的通讯

&#x1f31f;组件化&#xff1a;把一个项目拆成一个一个的组件&#xff0c;为了便与开发与维护 组件之间互相独立且封闭&#xff0c;一般而言&#xff0c;每个组件只能使用自己的数据&#xff08;组件状态私有&#xff09;。 如果组件之间相互传参怎么办&#xff1f; 那么就要…...

item_get-小红薯-商品详情

一、接口参数说明&#xff1a; smallredbook.item_get&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/smallredbook/item_get 名称类型必须描述keyString是调用key&#xff08;http://o0…...

网络安全进阶学习第十课——MySQL手工注入

文章目录 一、MYSQL数据库常用函数二、MYSQL默认的4个系统数据库以及重点库和表三、判断数据库类型四、联合查询注入1、具体步骤&#xff08;靶场演示&#xff09;&#xff1a;1&#xff09;首先判断注入点2&#xff09;判断是数字型还是字符型3&#xff09;要判断注入点的列数…...

2.3 网络安全协议

数据参考&#xff1a;CISP官方 目录 OSI七层模型TCP/IP体系架构TCP/IP安全架构 一、OSI七层模型 简介 开放系统互连模型&#xff08;Open System Interconnection Reference Model&#xff0c;OSI&#xff09;是国际标准化组织&#xff08;ISO&#xff09;于1977年发布的…...

Apache Flink概述

Flink 是构建在数据流之上的一款有状态的流计算框架&#xff0c;通常被人们称为第三代大数据分析方案 第一代大数据处理方案&#xff1a;基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 &#xff0c;两套独立的计算引擎&#xff0c;难度大&#xff08;2014年9月&#x…...

django使用mysql数据库

Django开 发操作数据库比使用pymysql操作更简单&#xff0c;内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图&#xff0c;pymysql就是mysql的驱动&#xff0c;代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动&a…...

MongoDB文档--基本概念

阿丹&#xff1a; 不断拓展自己的技术栈&#xff0c;不断学习新技术。 基本概念 MongoDB中文手册|官方文档中文版 - MongoDB-CN-Manual mongdb是文档数据库 MongoDB中的记录是一个文档&#xff0c;它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包…...

【TypeScript】TS入门及基础学习(一)

【TypeScript】TS入门及基础学习&#xff08;一&#xff09; 【TypeScript】TS入门及基础学习&#xff08;一&#xff09;一、前言二、基本概念1.强类型语言和弱类型语言2.动态语言和静态语言 三、TypeScript与JavaScript的区别四、环境搭建及演练准备4.1 安装到本地4.2 在线运…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...