手写springboot_Spring Boot 入门教程 | 图文讲解

fa603c8158cd2a70b082969ce3608d9a.png

目录

一、Spring Boot 是什么

二、为什么要使用 Spring Boot

三、快速入门

  • 3.1 创建 Spring Boot 项目
  • 3.2 项目结构
  • 3.3 引入 Web 依赖
  • 3.4 编写第一个接口
  • 3.5 启动程序,验证效果

四、总结

五、GitHub 示例代码

一、Spring Boot 是什么

以下截图自 Spring Boot 官方文档:

8a63c9dbbc119fc874078bc6f39e4dee.png

翻译整理一下,内容如下:

Spring Boot 是基于 Spring 框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可独立运行的,生产级别的应用程序。

基于 Spring Boot 内部的自动化配置功能,开发者可以在"零"配置, 或者只需要添加很少的配置,就可以进行日常的功能开发。

二、为什么要使用 Spring Boot

用权威说话,下图同样截图自 Spring Boot 官方文档:

f181d237848e43368d18354316b60101.png

我们再来翻译整理一下,内容如下:


  • 1、能够轻松、方便地创建一个 Spring 应用;
  • 2、直接使用内嵌的 Tomcat, Jetty, Undertow 容器(无需再手动安装容器,通过部署 WAR 包的方式);
  • 3、内部自动管理各种 Jar 包的版本依赖关系,再也不用为版本冲突而烦恼啦;
  • 4、自动化配置 Spring 相关功能,以及第三方库;
  • 5、提供诸如指标,健康检查, 外部化配置等功能;
  • 6、"零配置",再也不需要手写地狱般的 XML 配置了;

怎么样,看了 Spring Boot 这些强大的特性以后,是不是开始跃跃欲试了,接下来,让我们快速入门 Spring Boot 吧 !

PS: 正由于 Spring Boot 以上特性,才得以使它成为构建微服务架构的基础组件。

三、快速入门

3.1 创建 Spring Boot 项目

3.1.1 通过 Spring Initializr 来创建

  • 1、访问 Spring Initializr 地址:https://start.spring.io:
a756d6939a1ab08840a38f1d9f716447.png

默认情况下,Spring Initializr 生成的项目是通过 Maven 来构建的,开发语言为 Java, 版本用的最新的发行版,打包方式为 Jar, 使用的 Java 版本为 1.8,小伙伴们这里要注意一下!

  • 2、生成项目, 导入到开发工具中

点击 GenerateProject 按钮,下载的 Demo.zip, 解压后,导入到开发工具中,这里笔者使用的是 IntelliJ IDEA。

  • 3、File -> New -> Model from Existing Source, 可参考下图:
e1f4a23b055c2de40f47e4520d1047ca.png
  • 4、弹出框中,选中您的解压后的文件夹 -> OK -> 选择通过 Maven 的方式来导入项目:
db0f71848b198f9d816c053fbcf3fac7.png
  • 5、一路点击 Next -> Finished;

至此,通过 Spring Initializr 网站来创建应用,并导入到了我们的开发工具 IntelliJ IDEA 中就成功了。

PS: 如果您使用的是 Eclipse, 方式是 Import -> Existing Maven Projects -> Next -> 选择解压后的文件夹 -> Finsh

3.1.2 通过 IntelliJ IDEA 来创建应用

其实,我们还可以直接通过 IntelliJ IDEA 来创建一个 Spring Boot 项目,因为 IntelliJ IDEA 内置了 Spring Initializr,接下来,通过图文,让我们来看下要如何一步一步操作:

  • 1、File -> New -> Project, 跳出新建项目弹出框:
ba30d3c680102b060418489595c3c356.png
  • 2、点击 Next,弹出填写 maven 项目的需要的相关信息,这里我们用默认的就好了,继续点击 Next;
  • 3、再次弹出框,这里可以勾选开发中需要的 Starter 的组件, 如 Web, Redis 等,我们这里暂时不勾,后面通过手动添加的方式, 继续点击 Next -> Finish;

3.2 项目结构

项目创建成功后,可以看到结构如下:

b98f385b086640fa9f7fa1715604e1e2.png

共分为三个主要的文件夹:

  • src/mail/java: 存放 Java 源码,包括启动程序的入口;
  • src/mail/resources: 资源目录,用于放置相关配置文件,静态文件 html, css 等;
  • src/test/java: 存放单元测试类

3.3 引入 Web 依赖

在 pom.xml 文件中添加 web 依赖:

org.springframework.boot spring-boot-starter-web

PS: 不用手动去指定版本号,因为 Spring Boot 内部已经维护相关 Jar 包的依赖关系。

3.4 编写第一个接口

在 com.example.demo 包下添加 controller 包,用来存放所有对外部开发的接口, 完成后,创建 HelloController.java 类, 添加一个 /hello 接口:

@RestControllerpublic class HelloController { @GetMapping("/hello") public String hello() { return "Hello, Spring Boot !"; }}

添加 @RestController 注解,表示此类中所有定义的接口均为 RESTFul 风格,也就是说返参均为 JSON 格式的。

@GetMapping("/hello") 表示定义一个 GET 请求的接口,路径为 /hello。

3.5 启动程序,验证效果

69fdfa7b2dc772d86dbe98981cd00620.png

根据图示,点击按钮,来启动 Spring Boot Web 程序, 查看控制台输出:

 . ____ _ __ _ _ / / ___'_ __ _ _(_)_ __ __ _    ( ( )___ | '_ | '_| | '_ / _` |     / ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.4.RELEASE)2019-04-14 19:57:59.795 INFO 3680 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication on 192.168.0.100 with PID 3680 (/Users/a123123/Work/IdeaProjects/demo/target/classes started by allen-jiang in /Users/a123123/Work/IdeaProjects/demo)2019-04-14 19:57:59.798 INFO 3680 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default2019-04-14 19:58:00.666 INFO 3680 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2019-04-14 19:58:00.689 INFO 3680 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2019-04-14 19:58:00.689 INFO 3680 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17]2019-04-14 19:58:00.756 INFO 3680 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2019-04-14 19:58:00.757 INFO 3680 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 920 ms2019-04-14 19:58:00.978 INFO 3680 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019-04-14 19:58:01.183 INFO 3680 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019-04-14 19:58:01.186 INFO 3680 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.678 seconds (JVM running for 2.176)

当控制台日志中输出了 Tomcatstarted on port(s):8080(http)withcontext path''时,表示内嵌的 Tomcat 容器已经启动成功了,端口为 8080 !

接下来,我们在浏览器上访问 http://localhost:8080/hello 接口,验证一下,接口是否能够正常访问:

4c8bf65d9ac63294791bb45ba557d6b9.png

返回了我们想要的 Hello,SpringBoot! 字符串,接口访问正常,大工告成!

四、总结

本文中,我们首先了解了什么是 Spring Boot, 以及Spring Boot 的相关特性,最后我们手把手学习了如何搭建一个 Spring Boot 项目,并编写了第一个接口且访问成功。

通过实际操作,真切地感受到了 Spring Boot 的魅力所在!老铁,双击 666!

赠送 | 面试&学习福利资源

最近在网上发现一个不错的 PDF 资源《Java 核心面试知识.pdf》分享给大家,不光是面试,学习,你都值得拥有!!!

获取方式: 关注公众号: 小哈学Java, 后台回复 资源,既可获取资源链接,下面是目录以及部分截图:

424fd58e676dd50d5b6ac9c2bd128d71.png
98a2fd74fb2c9e40dc909b6cc15c75c2.png
8bafc222006aff4ef7e84cb1a81e687d.png
8944fed8f910f8918e61325ae04e882c.png
1ddc19661b40580ad7e05faa973c3f33.png
6a9b54024a63528fc7d950ce4c2b75b9.png
2551f810c6f55766139dffaee5f6b35c.png

重要的事情说两遍,获取方式: 关注公众号: 小哈学Java, 后台回复 资源,既可获取资源链接 !!!

欢迎关注微信公众号: 小哈学Java

c8a615cea1d258d963928de76ec1dde3.png

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

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

相关文章

lunix 安装python3

Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装python3和python2共存 首先去python官网下载…

机器学习之朴素贝叶斯法

转载请注明出处:http://www.cnblogs.com/Peyton-Li/ 朴素贝叶斯法是机器学习模型中一个比较简单的模型,实现简单,比较常用。 是定义在输入空间上的随机向量,是定义在输出空间上的随机变量。是和的联合概率分布。训练数据集由独立同…

如何让梯形变成平行四边形_开放的课堂 创新的天地——平行四边形的面积教学片段与反思...

一、 课题的确定学生在三年级学过长方形、正方形的面积计算,经历过从数方格的办法得出面积计算公式的过程。因此,学生对于面积计算公式的推导有一定的经验和知识基础。基于上述考虑,我想完全放手让学生去研究如何计算平行四边形的面积。这对学…

bzoj1670【Usaco2006 Oct】Building the Moat 护城河的挖掘

1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 387 Solved: 288[Submit][Status][Discuss]Description 为了防止口渴的食蚁兽进入他的农场,Farmer John决定在他的农场周围挖一条护城河。农场里一共同拥有N(8…

Vue之组件之间的数据传递

Vue的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据,必须使用特定的方法才能实现组件之间的数据传递。 下列为在vue-cli创建项目中的操作 一父组件向子组件传递数据 在Vue中,用props向子组件传递数据。 子组件部分&#…

偶然发现一个大佬写的 React 脚手架,叫Moderate, 用起来很方便

发现一个大佬写的 React 脚手架,叫Moderate, 用起来很方便 Moderate,意思为适中的,适度的,用这个作为代号,主要取决于他的本名“中用”,其一以贯之的想法就是中庸,秉承着以人为本的态度&#xf…

案例 自动办公_1300张办公系列前台参考图,请您查收!

设计情报局室内设计师的灵感聚集地关注一个有格调的空间必定有一处高颜值的前台漂亮的前台很重要...是空间给人的第一印象一个独一无二的前台设计还可以提升整个空间的气质与逼格连个漂亮的前台都没有作为颜控界扛把子的设计师们还怎么混?SO今天小编给大家带来一份《…

目标检测_目标检测 | Anchor free的目标检测进阶版本

今天说的是《Soft Anchor-Point Object Detection》,其也是最近关于anchor free的目标检测的论文,作者来自于CMU,一作同样也是FSAF(2019 CVPR)的作者。该论文的出发点还是在样本选择和FPN特征选择层面。背景Anchor free是目标检测领域的一个研…

homework1

一.什么是RUP?二.什么是XP?三.什么是敏捷过程? 一。什么是RUP?RUP是一种完整而且完美的软件过程 1。最佳实践 (1)迭代式开发 (2)管理需求 (3)使用基于构件软件的体系结构 (4&…

五个温度带的分界线_女神建筑师在拿破仑故乡打造的海景别墅,超美!超有温度!【环球设计2225期】...

生活的温度 法国建筑师阿米莉亚塔维拉(Amelia Tavella)一直对设计充满热情,她出生在阿雅克肖市,在巴黎的建筑学院学习建筑专业,如今她居住普罗旺斯地区的艾克斯。她说:“设计让我涉足很多有趣的领域并能充分发挥我的想象力。这是一…

银行it现状调研_中央银行系统行业现状调研分析及发展趋势预测报告(2019年版)...

QYResearch预测:2019-2025全球与中国中央银行系统市场现状及未来发展趋势【纸版价格】:RMB 15000【电子版(PDF)价格】:RMB 15000【报告篇幅】:112【报告图表数】:158【报告出版时间】:2019年11月报告摘要本…

视频编解码技术小结

1、什么是H.261编码协议 答:H.261是最早出现的视频编码建议,它采用的算法结合了可减少时间冗余的帧间预测和可减少空间冗余的DCT变换的混合编码方法,其输出码率是p64kbit/s。p取值较小时,只能传清晰度不太高的图像&#…

基于BISS0001构成的热释电红外延时照明控制器电路图

BISS0001是采用CMOS数模混合结构、具有DIP-16和SOIC-16两种封装的热释电红外传感信号处理集成电路。芯片内部集成了电压比较器、状态控制器、延时电路定时器、封锁时间定时器以及参考电压源等电路,常用于防盗报警器、自动门等各种自动开关。利用BISS0001构成的热释电…

安卓APP破解利器之FRIDA

本文讲的是安卓APP破解利器之FRIDA,在我去年参加RadareCon大会的时候,我了解到了一个动态的二进制插桩框架——Frida。起初我觉得它似乎只有一丁点趣味,后来经过实践才发现它原来是如此的有趣。记得游戏里的上帝模式吗?这就是Frid…

如何获取option的下标和值_数智化时代下,如何获取企业增长密码?

信息化时代下,很多企业前前后后上线了各种信息化系统,ERP、OA、CRM…随着企业数字化的深入推进,“移动互联网、云计算、大数据、人工智能、物联网、区块链”等技术的革新,这些信息化系统难以满足企业对数智化转型的新需求&#xf…

基于51单片机的交通灯控制设计

课程设计任务书及成绩 课程名称 单片机课程设计 题目 交通灯控制设计 课程设计目标与任务、计划与进度安排: 实践教学要求与任务: 1、了解交通灯的基本工作原理; 2、用Proteus模拟实现交通灯控制; 3、用Keil C51编程实现上述功能; 4、…

福斯i6飞行模式设置_数据网络卡的时候,不妨试试“开关飞行模式”?上网速度明显变快...

相信大家都有过这种经历,手机数据网速很慢的时候,开一下飞行模式再关闭,上网速度会比之前快很多,这就有人有了疑问,为什么呢?开飞行模式再关掉飞行模式,其实等于是完成了一次手动的小区重选。移…

安装开源 ITIL 门户 iTOP

在 CentOS 7 上部署iTOP是一个简单的基于Web的开源IT服务管理工具。它有所有的ITIL功能,包括服务台、配置管理、事件管理、问题管理、变更管理和服务管理。iTOP依赖于Apache/IIS、MySQL和PHP,因此它可以运行在任何支持这些软件的操作系统中。因为iTOP是一…

基于FPGA 的8b10b编解码电路前端电路设计

基于FPGA 的8b10b编解码电路前端电路设计 摘 要 本设计是采用EDA技术设计的一种8B /10B 编解码电路,实现了在高速的串行数据传输中的直流平衡。该编解码电路设计大体上可以由五个模块构成,分别是默认编码模块、差异度计算模块、编码校正模块、并串转换模块、显示模…

day15(mysql 的多表查询,事务)

mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1(a INT PRIMARY KEY ,b VARCHAR(10) ) INSERT INTO t1 VALUES(1,a); INSERT INTO t1 VALUES(2,b); INSERT INTO t1 VALUES(3,c); /*创建t2*/…