SpringBoot2.0入门(详细文档)
文章目录
- Springboot是什么
- Springboot2.x依赖环境和版本新特性说明
- 为什么学习Springboot
- 从springboot优点来看
- 从未来发展的趋势来看
- 开发环境
- Spring Boot开发环境搭建和项目启动
- jdk 的配置
- Spring Boot 工程的构建
- maven配置
- IDEA 快速构建
- maven 创建工程
- 常用注解
- 完整代码
Springboot是什么
Spring Boot是一个用于开发Java应用程序的开源框架。它基于Spring框架,简化了Spring应用程序的配置和部署过程。Spring Boot通过自动配置来减少开发者的工作量,提供了一种快速构建应用程序的方式。
Springboot2.x依赖环境和版本新特性说明
讲解新版本依赖环境和Springboot2新特性概念
- 依赖版本jdk8以上,Springboot2.x用JKD8,因为底层是Spring framework5,
- 安装maven最新版本,maven3.2以上版本
- 新特性
- 翻译工具:https://translate.google.cn/
- springbootGitHub地址:http://github.com/spring-projects/spring-boot
- Springboot官方文档:http://spring.io/guides/gs/spring-boot
为什么学习Springboot
从springboot优点来看
- 简化配置:Spring Boot提供了自动配置的功能,可以根据项目的依赖和环境自动配置应用程序。开发者无需手动配置大量的XML文件或注解,可以快速搭建整个项目的基础框架。
- 快速开发:Spring Boot提供了许多开箱即用的功能和扩展库,可以大大减少开发时间和工作量。开发人员可以通过使用这些功能和库快速搭建应用程序,而无需重复编写常见的代码。
- 独立性:Spring Boot应用程序可以作为独立的可执行文件运行,无需外部的Web服务器。它内置了嵌入式Web服务器(如Tomcat、Jetty等),可以直接运行应用程序。这样可以减少部署和运维的复杂性
- 易于测试:Spring Boot提供了一系列的测试工具和框架,可以方便地进行单元测试、集成测试和端到端测试。开发者可以使用这些工具来保证应用程序的质量和稳定性。
- 生态系统:Spring Boot是在Spring框架之上构建的,可以充分利用Spring框架丰富的生态系统。开发者可以方便地集成其他Spring组件和第三方库,提供更灵活和可扩展的解决方案。
从未来发展的趋势来看
Spring Boot未来发展的趋势是更加注重微服务架构、云原生应用、响应式编程、安全性增强以及更好的集成和开发体验。这些趋势将有助于Spring Boot在未来持续地发展和壮大,并进一步提升在开发者中的地位和影响力。
开发环境
开发工具
- JDK版本
- Spring Boot版本
- Maven版本:3.5.2
涉及到的插件:
- FastJson
- Swagger2
- Thymeleaf
- MyBatis
- Redis
- ActiveMQ
- Shiro
- Lucence
- YAML
Spring Boot开发环境搭建和项目启动
jdk 的配置
使用 IDEA 进行开发,在IDEA 中配置 jdk 的方式很简单,打开文件->项目结构,如下图所
- 选择 SDKs
- 在 JDK home path 中选择本地 jdk 的安装目录
- 在 Name 中为 jdk 自定义名字
Spring Boot 工程的构建
maven配置
创建了 Spring Boot 项目之后,需要进行 maven 配置。打开文件->设置,搜索 maven,配置一下本地的 maven 信息。如下
IDEA 快速构建
在IDEA 中可以通过文件->新建->项目来快速构建 Spring Boot 工程。如下,选择 Spring Initializr,在 Project SDK 中选择刚刚我们导入的 jdk,点击 Next,到了项目的配置信息。
组:填企业域名,本课程使用com.itcodai
工件:填项目名称,本课程中每一课的工程名以course+课号命令,这里使用 course01
依赖项:可以添加我们项目中所需要的依赖信息,根据实际情况来添加,本课程只需要选择 Web 即可。
maven 创建工程
Springboot是建立在maven上的我们只需要创建一个maven工程导入SpringBoot依赖即可
不需要选择原型
输入项目名称点击完成即可
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.7</version>
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;//这是一个复合注解,通常情况下,我们会把启动类放到项目的顶级目录
//注意:SpringBootApplication中的@ComponentScan会默认扫描本类所在包一下的子包
@SpringBootApplication
public class DemoAplication {public static void main(String[] args) {SpringApplication.run(DemoAplication.class,args);}
}
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping("/")public String hello(){return "hello";}
}
重新运行 main 方法启动项目,在浏览器中输入 localhost:8080,如果看到“hello”,那么恭喜你项目启动成功!Spring Boot 就是这么简单方便!端口号默认是8080,如果想要修改,可以在 application.properties 文件中使用 server.port 来人为指定端口,如811端口
server.port=811
常用注解
启动类的注解
@SpringBootApplication是一个复合注解。@SpringBootApplication=@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan
@Configuration:@SpringBootConfiguration标注在类上,相当与把该类作为Spring的xml配置文件中的<beans> 作用为:配置Spring容器(应用上下文)
@EnableAutoConfiguration:开启自动配置。MATA-INF下的Spring.facotries的一些自动配置类
@ComponentScan:扫描注解。如果不配置basepackage,默认扫描@ComponentScan注解类的同级类和子目录下的所有类。所以要把启动类放到顶级目录。
控制层的注解
@RestController and @RequestMapping是SpringMvc的注解,不是SpringBoot的特有的
@RestController = @Controller+@ResponseBody
完整代码
//bean类
import com.fasterxml.jackson.annotation.*;
import lombok.Data;import java.io.Serializable;
import java.util.Date;@Data
public class Person implements Serializable {private String userid;@JsonIgnore//字段不返回private int age;@JsonFormat(pattern = "yyyy-MM-dd")//指定时间格式private Date time;@JsonProperty("dizi")//指定别名 注意:使用别名后,请求中key也要使用别名private String address;@JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回private String mailbox;}
Controller类
import com.demo.bean.Person;
import org.springframework.web.bind.annotation.*;@RestController
public class HelloController {@RequestMapping("/")public String hello(){return "hello";}/*** 功能描述:restful协议。从路径中获取参数* 1.接口中的参数定义,建议使用下划线隔开,不在使用驼峰* 2.path="/{cityid}/{userid}",标识路径中那些参数* 3.method=RequestMethod.GET,只处理get请求* 4.@PathVariable("cityid"),从路径中取出参数值* @return*/@RequestMapping(value = "/{cityid}/{userid}",method = RequestMethod.GET )public Object test(@PathVariable("cityid")String cityid,@PathVariable("userid")String userid){return cityid+"---"+userid;}/***参数的默认值设置* 添加@RequestParam 默认此参数是必填的* @return*/@RequestMapping("/test02")public Object test02(@RequestParam(required = false,defaultValue = "2") Integer pageNo){return pageNo;}/*** 测试@RequestBody。要从请求体中获取数据* 有如下要求:* 1.数据要在请求体中* 2.数据的格式为content-type 是值是application/json* @return*/@RequestMapping("/test03")public Object test03(@RequestBody Person person){return person;}/*** 从请求头获取数据* 一般情况下请求头中放置认证信息,例如access_token* @param access_token* @return*/@RequestMapping("/test04")public Object test04(@RequestHeader String access_token){return access_token;}/*** 获取实体类的参数* @JsonIgnore//字段不返回* @JsonFormat(pattern = "yyyy-MM-dd")//指定时间格式* @JsonProperty("")//指定别名 注意:使用别名后,请求中key也要使用别名* @JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回* @return*/@RequestMapping("/test05")public Object test05(@RequestBody Person person){return person;}
}
//pom.xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.5</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency></dependencies>
相关文章:
SpringBoot2.0入门(详细文档)
文章目录 Springboot是什么Springboot2.x依赖环境和版本新特性说明为什么学习Springboot从springboot优点来看从未来发展的趋势来看 开发环境Spring Boot开发环境搭建和项目启动jdk 的配置Spring Boot 工程的构建maven配置IDEA 快速构建maven 创建工程常用注解 完整代码 Spring…...
Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私
1. 引言 Aztec的架构,不同于当前“通过EVM兼容执行环境”所实现的区块链水平扩容趋势。Aztec内部笑称其构建的为首个非zkEVM协议。 Aztec专注于实现: 成为理解和需要智能合约隐私的开发者的终极解决方案。 Aztec为开发者提供构建隐私优先app所需的网…...
【Vue】详细介绍Vue项目的目录结构及各个核心文件的示例代码
Vue.js并没有严格的文件和目录结构要求,但一般情况下,我们的Vue项目目录结构如下: ├── node_modules/ # 项目依赖的 node 模块 ├── public/ # 公共资源目录 │ ├── favicon.ico # 网页图标 │ └──…...
【人大金仓】迁移MySql数据库到人大金仓,出现sys_config表重复
需要迁移的数据库中有张表名称为sys_config,查询的时候查询结果不符合我们的预期,经咨询金仓售后人员后得知和系统表重名… 解决问题方法如下: alter database [数据库名] set search_path to "$user", [模式名,(可选&…...
linux内核进程间通信IPC----消息队列
消息队列:提供一种从一个进程向另一个进程发送一个数据块的方法。与FIFO相比,消息队列的优势在于,它独立于发送和接收进程而存在。 1.链表式结构组织,存放于内核。 2.通过队列标识来引用。 3.通过一个数据类型来索引指定的数据。 …...
PHP实现微信小程序状态检测(违规、暂停服务、维护中、正在修复)
实现原理 进入那些状态不正常的小程序会被重定向至一个Url,使用抓包软件抓取这个Url,剔除不必要参数,使用cURl函数请求网页获得HTML内容,根据内容解析出当前APPID的小程序的状态。 代码 <?php// 编码header(Content-type:ap…...
ubuntu在线直接升级
前几天VMware上安装了ubuntu,当时的内核版本支持(ipguard,加密软件),后来ubuntu自动升级了linux内核,导致加入软件不支持,无法访问加密文件了。后来加密软件商更新了软件,但还是赶不上linux内核更新速度,还…...
学习笔记:卸载nav2 navigation2导航
nav2二进制文件安装 nav2导航安装方式分为二进制文件安装和源码方式安装,如果想用最快的方式跑通代码,推荐二进制安装,不用编译,没有缺少依赖编译失败的烦恼, 安装命令: sudo apt install ros-$ROS_DISTR…...
觉非科技数据闭环系列 | BEV感知研发实践
随着自动驾驶迈向量产场景,“BEV感知数据闭环”已成为新一代自动驾驶量产系统的核心架构。数据成为了至关重要的技术驱动力,发挥数据闭环的飞轮效应或将成为下半场从1到N的胜负关键。 觉非科技在此方面已进行了大量的研究工作,并在实际量产项…...
程序员情绪把控
文章目录 建议情绪 建议 保持稳定的情绪在工作中非常重要,以下是一些建议: 自我意识:保持对自己情绪的觉察和理解,了解自己的情绪状态和触发情绪的因素。通过自我反省和观察,你可以更好地管理和调节情绪。 健康生活方…...
弱监督目标检测:ALWOD: Active Learning for Weakly-Supervised Object Detection
论文作者:Yuting Wang,Velibor Ilic,Jiatong Li,Branislav Kisacanin,Vladimir Pavlovic 作者单位:Rutgers University;The Institute for Artificial Intelligence Research and Development of Serbia;Nvidia Corporation 论文链接:http:…...
驱动开发 day3
总结:自动创建设备节点udev的流程 1.如何创建节点 手动创建:mknod 地址 设备文件类型 主设备号 次设备号(0 - 255) 自动创建:devfs (创建节点的逻辑在内核 ---> 2.4版本以前使用) udev (创建节点的逻辑在应用层) mdev (轻量级的udev) 2.…...
许可license分析 第一章
许可分析是指对软件许可证进行详细的分析和评估,以了解组织内部对软件许可的需求和使用情况。通过许可分析,可以帮助组织更好地管理和优化软件许可证的使用。以下是一些可能的许可分析方法和步骤: 收集许可证信息:首先,…...
Goby 漏洞发布|管家婆订货易在线商城 SelectImage.aspx 文件上传漏洞
漏洞名称:管家婆订货易在线商城 SelectImage.aspx 文件上传漏洞 English Name: GJP SelectImage.aspx file upload vulnerability CVSS core: 9.8 影响资产数:2617 漏洞描述: 任我行率先针对中小企业推出了管家婆进销存、财务…...
Android屏幕录制
这里使用Java语言编写实现,完整代码如下: 文件 AndroidMainfest.xml 的主要配置 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"…...
实在智能牵手埃林哲,“TARS-RPA-Agent+云时通”双剑合璧共推企业数字化转型
近日,《数字中国建设整体布局规划》进一步明确了数字化发展的方向和节奏,对企业数字化建设提出了新要求。回看过去几十年,信息化建设如火如荼,各类IT系统如雨后春笋般涌现,系统的自动化操作及系统间数据交互共享等需求…...
拥有这个中文版CustomGPT,你也能定制自己的AI问答机器人
人工智能技术的快速发展为各行各业带来了前所未有的机会,其中之一就是定制化的问答机器人。这些机器人可以用于客户支持、知识管理、虚拟助手等多个领域,帮助企业提高效率,提供更好的用户体验。很多人可能都知道通过CustomGPT能够设计自己的人…...
fastadmin 基本使用配置
fastadmin 版本 1.3.5 thinkphp 版本 5.0.25 配置 cache 为 redis 保存 // ---------------------------------------------------------------------- // | 缓存设置 // ---------------------------------------------------------------------- cache …...
netty 线程组
我们的bossgroup和workgroup都是使用的NioEventLoopGroup。其内部有一个EventExecutor类型的数组用来存储所有的线程组。 NioEventLoopGroup {EventExecutor[] children; }NioEventLoopGroup继承自MultithreadEventExecutorGroup,构造函数不指定线程数默认会根据系…...
Reactor 第十二篇 WebFlux集成PostgreSQL
1 引言 在现代的应用开发中,数据库是存储和管理数据的关键组件。PostgreSQL 是一种强大的开源关系型数据库,而 WebFlux 是 Spring 框架提供的响应式编程模型。本文将介绍如何使用 Reactor 和 WebFlux 集成 PostgreSQL,实现响应式的数据库访问…...
红队打靶:Me and My Girlfriend打靶思路详解(vulnhub)
目录 写在开头 第一步:主机发现和端口扫描 第二步:Web渗透(修改XFF代理) 第三步:数据库手工枚举 第四步:sudo php提权 总结与思考 写在开头 本篇博客在自己的理解之上根据大佬红队笔记的视频进行…...
Mysql高级——索引(2)
常见索引 索引分类 在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。 分类含义特点关键字主键索引针对于表中主键创建的索引默认自动创建, 只能有一个PRIMARY唯一索引避免同一个表中某数据列中的值重复可以…...
【史上最硬核分享】Docker+jenkinsPipeline 运行实现 python 自动化(超详细)
一、实现思路 在 Linux 服务器安装 docker创建 jenkins 容器jenkins 中创建 pipeline 项目根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目执行完成之后删除容器 二、环境准备 Linu…...
leetcode 3. 无重复字符的最长子串
2023.9.15 本题我用的暴力双层for循环 unordered_set 解决的,外循环控制字符起始位置,内循环将字符放入 unordered_set,并查找有无重复的元素。 用了一个全局变量记录最长字串的长度,局部变量count记录当前层循环的最长子串长度…...
doccano 文本标注工具使用
最近在做面向大模型的文本标注工作,涉及到多人协同的问题,因此用到了doccano工具。 这个工具可以使用docker进行安装,安装之后的启动也都比较简单。 关于基础使用(例如管理员登录、新建任务、上传数据集等)ÿ…...
快速排序算法的递归和非递归
基本思路 选择一个基准值,将数组划分三个区域,小于基准值的区域位于左侧,等于基准值的区域位于中间,大于基准值的区域位于右侧。将大于和小于区域继续进行分区,周而复始,不断进行分区和交换,直…...
Maven无法拉取SNAPSHOT依赖的解决办法
背景 自己所在的部门主要是为其他项目组提供基础组件,如果需要使用新特性,其他项目组还会经常引用SNAPSHOT版本的组件进行开发测试。平时自己做测试的时候,因为手里有源码,所以每次都是先执行 mvn install 在本地安装后ÿ…...
day16-面向对象综合练习(上)
1. 设计游戏的目的 锻炼逻辑思维能力利用Java的图形化界面,写一个项目,知道前面学习的知识点在实际开发中的应用场景 2. 游戏的最终效果呈现 Hello,各位同学大家好。今天,我们要写一个非常有意思的小游戏 —《拼图小游戏》 我们…...
在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境
目录 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境一 Fyne 和 MSYS2简介1.1 Fyne1.2 MSYS2 二 安装 MSYS22.1 下载MSYS22.2 安装2.3 环境变量设置2.4 检测安装环境 三 参考文档 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发…...
漫谈:C、C++字符串的困局
由于历史的原因,C、C字符串是个很让程序员头疼的东西。 字符串被解读为字符数组,但是又不等价于字符数组,而是带有附加的结束符的字符数组。 结束符‘\0’也是一个字符,但是又不计算在字符串长度里面(strlen࿰…...
局政府网站建设管理制度/广告软文范例
二分查找:折半查找,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如 果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间…...
手机网站页面尺寸大小/行业数据统计网站
月南京财经大学自考管理系统中计算机应用实践试卷.doc《管理系统中计算机应用》实践课上机考试操作手册Windows XP Visual FoxPro6.0环境在D盘根目录下建立一个考生文件夹,考生文件夹的名字为为准考证号考生姓名。例如某考生的准考证号为1234567890,名字…...
网站建设收费价格/大庆建站公司
第三届世界互联网大会迎来行业盛事——世界互联网领先科技成果发布。成果发布活动上,中国科学院量子信息与量子科技前沿卓越创新中心主任潘建伟介绍,量子通讯将成为未来互联网信息安全的中坚力量。 潘建伟介绍,在传播线路、服务器上有各种各样…...
搬瓦工vps做网站速度怎么样/网址搜索引擎入口
电影中常见的画面比例为 2.39 : 1,而现在一般的视频画面比例多为 16 : 9。要为视频添加电影黑边效果,首先要进行简单的计算。计算单个黑边高度(视频高度 - (视频宽度 2.39)) 2以 1920 x 1080 为例…...
wordpress中常用插件/怎么注册中视频账号
在上文中,Scaffolding Wizard 为您创建了主视图和详细稀土,本文主要为您介绍如何编辑表单视图。 获取工具下载 - DevExpress v21.2 编辑表单视图 由于您的详细视图包含允许修改集合记录的按钮,因此您需要为每个集合编辑表单,该…...
支付公司网站建设费账务处理/电商营销策划方案范文
注: 文章摘自 https://includestdio.com/1127.html 方法1 删除是删除对象的属性没有任何剩菜剩下的唯一真正的方法 但它的工作比其“替代”设置慢100倍 object[key] undefined var myObject {"ircEvent": "PRIVMSG","method": "newURI&qu…...