在本文中,主要内容包括什么是Spring Boot,优点,主要功能以及使用Spring Boot创建一个简单的应用程序。

Spring Boot是什么?

​ Spring Boot是对Spring Framework的增强和扩展,它极大的消除了使用Spring Framework时所需的大量样板代码的配置,与此同时,Spring Boot提供的很多Starter能让开发人员更快的完成系统的开发。

Spring Boot主要的优势

相比于Spring Framework,使用Spring Boot能为开发者带来以下优势:

  • 为使用Spring Framework带来更好的体验
  • 开箱即用,Spring Boot提供了大量的默认配置,根据需求,开发者可以很轻松覆盖原有配置
  • 提供了一些列优秀的功能插件,如嵌入式服务器,安全检查,系统指标,运行状况检查以及外部化配置
  • 推荐基于Java代码的配置方式,可以很少或完全不使用XML配置应用

Spring Boot的核心功能

与Spring Framework相比较,下面列举Spring Boot的一些核心功能,Spring Boot的功能不局限于下面所列举:

  1. Spring Boot Starters
  2. Spring Boot AutoConfiguration
  3. 优雅的配置管理
  4. Spring Boot Actuator
  5. 易于使用的嵌入式Servlet容器

接下来,将详细说明Spring Boot的核心功能。

1. Spring Boot Starters

​ Spring Boot提供了许多开箱即用的Starter模块,例如Spring MVC,JPA,MySQL,Spring Security,Solor,Hibernate,Freemarker等等。这些Starter已经预先配置好了最常用的依赖库,因此你不必像使用Spring那样去考虑各依赖库之间的版本兼容问题。

​ 如果你希望在项目中使用Hibernate框架且基于JPA实现,你只需要在pom文件中加入spring-boot-starter-data-jpa即可,Spring Boot会自动加载所需要的依赖库。

2. Spring Boot AutoConfiguration

​ Spring Boot另一个革命性的功能是自动配置,有了自动配置功能,你可以摒弃之前使用XML手动配置应用的方式,通过几行代码,即可完成应用系统复杂的配置工作。

​ Spring Boot会自动根据某些特定的条件自动完成Bean的注册工作,下面是触发Spring Boot完成自动注入的一些条件:

  • 当类路径下存在特定的且可用的类时
  • 当Spring Bean存在/不存在时
  • 当存在特定的系统属性时
  • 当缺少配置文件时

例如,当你的项目中存在spring-mvc的依赖库时,Spring Boot会猜测你将构建一个基于Spring MVC的Web应用程序,在你未编写任何代码前,Spring Boot会尝试注册一个默认的DispatcherServlet。如果你的类路径下包含得有任何嵌入式数据库驱动程序(H2或HSQL),在未显示配置DataSource前,Spring Boot会自动配置一个DataSource得Bean。

3. 优雅的配置管理

​ Spring Boot支持使用@PropertySource注解完成外部化可配置属性。使用Spring Boot的配置键值对,可以将键值对与Bean属性进行绑定,另外,Spring Boot还提供为不同环境提供针对性的配置文件,你只需要简单的几行代码即可完成配置管理。

4. Spring Boot Actuator

​ 很多时候,我们都需要去收集在生产环境中运行的应用程序的诸多性能参数,而Spring Boot Actuator已经为我们提供了类似的许多功能,我们无需编写大量的代码,只需简单的一些配置,便可监控我们的应用程序,收集指标数据,了解URL请求状况等。例如,我们可以通过引入Spring Boot Actuator而获得如下的一些便利:

  • 获取应用程序中所有Spring Bean的详细信息
  • 获取应用程序运行状况信息
  • 获取HTTP跟踪信息
  • 获取应用程序日志信息
  • 获取应用程序中的计划任务信息
  • 获取应用程序中的路径映射列表信息(Web应用)

5. 易于使用的嵌入式Servlet容器

​ 以往,我们在构建Web应用程序时,需要手动创建WAR类型的程序包,然后将其部署到外部服务器(例如Tomcat)上才可以运行应用程序,现在,当你使用Spring Boot时,你可以很方便的创建JAR类型的程序包,且该类型的程序包已经内嵌了Servlet容器,你可以在不依赖于外部服务器的情况下运行Web应用程序。

6. 系统要求

​ Spring Boot 2.2.2.RELEASE最低要求Java 8,同时也支持Java 13。此外,还需要Spring Framework 5.2.2.RELEASE或更高的版本。

6.1 构建工具本版

在开始使用Spring Boot 2.2.2之前,你应该先检查本地的构建工具是否满足以下的配置要求:

f19478fcd70742d28139b6a934ba12e1

SpringBoot 2.2.2构建工具版本列表

6.2 Servlet容器

Spring Boot 2.2.2支持以下的嵌入式Servlet容器:

f0a015e6260c4ae0a040460b5a9a4c7b

Spring Boot 2.2.2内嵌容器列表

除此之外,你还可以将Spring Boot应用程序打包为WAR包,部署到支持Servlet 3.1及以上版本的外部容器中。

7. 为什么使用Spring Boot?

与直接使用Spring相比,使用Spring Boot你将如下的一些优势(不局限于列举范围):

  1. 开发基于Spring的应用变得更简单容易
  2. 开箱即用的特性减少的开发时间,提高了开发效率
  3. Spring Boot避免了大量的样板代码和XML配置
  4. 能够很轻松的与其他Spring生态系统集成(例如Spring JDBC,Spring ORM,Spring Data,Spring Security)
  5. Spring Boot的自动注入能够帮助开发人员减少工作量
  6. Spring Boot提供了嵌入式的Servlet容器,方便开发人员对应用进行测试

8.编写第一个Spring Boot应用程序

​ 本小节将基于Java 8 和Maven 3.0+构建一个简单的Spring Boot Web应用程序,通过浏览器访问http://localhost:8080 ,在页面中输出”Hello Spring Boot“语句。

​ 在开始编写应用程序之前,先检查本地环境是否满足开发要求。首先,打开操作系统终端,检查Java的版本信息,以Microsoft Windows 10 为例:

440a88c4305e42f5bee4b49016068d0f

检查JDK版本信息

然后,在终端输入mvn -v检查Maven的版本信息

2c6cf352edb040519428e6b08c3df6b8

检查Maven版本信息

8.1 创建POM

首先,我们需要创建一个工程目录spring-boot-firstapp,然后在其目录下创建一个Maven pom.xml文件,该文件用于管理项目的依赖。然后,使用你喜欢的编辑器打开该文件并写入如下的内容:

<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot        spring-boot-starter-parent        2.2.2.RELEASEcom.ramostear    spring-boot-firstapp    0.0.1-SNAPSHOTspring-boot-firstappDemo project for Spring Boot1.8org.springframework.boot            spring-boot-starter        org.springframework.boot                spring-boot-maven-plugin            

最后,打开你的操作系统终端,导航到spring-boot-firstapp目录下,执行mvn package命令进行测试,执行此命令后,spring-boot-firstapp目录下会生成多个文件夹:

spring-boot-firstapp├─src    ├─main    │  ├─java    │  │  └─com    │  │      └─ramostear    │  │          └─springbootfirstapp    │  │                  SpringBootFirstappApplication.java    │  │                      │  └─resources    │          application.properties    │              └─test    └─java    └─com    └─ramostear    └─springbootfirstapp      └─SpringBootFirstappApplicationTests.java

8.2 添加Web依赖

由于我们要创建一个Web应用程序,因此需要向pom文件中加入相关的web依赖。现在我们使用spring boot构建web应用程序,只需在pom文件的dependencies节点中加入如下的依赖即可:

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

在这里,你会发现我们并没有填写spring-boot-starter-web依赖库的版本号,该依赖库的版本将由spring-boot-starter-parent统一管理。

8.3 编写代码

现在,我们要创建一个Java文件,完成向浏览器页面输入”Hello Spring Boot“的功能。在src/main/java/com/ramostear/springbootfirstapp目录下创建一个名为HelloSpringBoot.java的文件,并用你喜欢的文本编辑器打开文件并写入以下代码:

package com.ramostear.springbootfirstapp;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;/** * @ClassName HelloSpringBoot * @Description TODO * @Author ramostear * @Date 2020/1/7 0007 15:19 * @Version 1.0 **/@RestControllerpublic class HelloSpringBoot {    @GetMapping("/")    public String sayHello(){        return "Hello Spring Boot";    }}

RestController注解会将字符串”Hello Spring Boot“直接返回到页面,而不是返回一个视图;GetMapping时RequestMapping的一种简写。

8.4 运行示例

​ 由于使用了spring-boot-starter-parent依赖,因此可以在终端使用mvn spring-boot:run命令来运行本次示例,命令执行成功后,你可以在控制台查看到以下的输出:

mvn spring-boot:run.   ____          _            __ _ _ / / ___'_ __ _ _(_)_ __  __ _    ( ( )___ | '_ | '_| | '_ / _` |     /  ___)| |_)| | | | | || (_| |  ) ) ) )  '  |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot ::        (v2.2.2.RELEASE)...2020-01-07 15:26:04.868  INFO 3100 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''...

现在,你可以打开浏览器并输入http://localhost:8080,你可以在页面上观察到如下的信息:

c8f18b8caf684125abffa23331315389

第一个Spring Boot应用程序

hibernate版本_Spring Boot入门(最新基于SpringBoot2.2.2版本系列教程)相关推荐

  1. php读取西门子plc_基于Socket访问西门子PLC系列教程(二)

    本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:[公众号dotNet工控上位机:thinger_swj] 基于Socket ...

  2. 基于Socket访问西门子PLC系列教程(二)

    本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:[公众号dotNet工控上位机:thinger_swj] 基于Socket ...

  3. springboot 拦截器_Spring Boot入门系列(十)如何使用拦截器,一学就会!

    前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...

  4. opencv4版本和3版本_Spring Boot 太狠了,一口气发布了 3 个版本!

    Spring Boot 这么狠的么,每次连发三个版本,Spring Boot 比 Java 还要版本帝啊. 老铁们,栈长我都学不过来了啊. 这三个版本分别是:2.3.4, 2.2.10, 2.1.17 ...

  5. 单片机学习笔记1--资料下载、环境搭建(基于百问网STM32F103系列教程)

    第1篇 资料下载.环境搭建 第一章 百问网视频体系及学习路线 1.1课程视频变化 2011-2020:百问网录制了10年的Linux视频. 2021: 1.首次进入单片机领域,发布单片机课程! 2.重 ...

  6. springboot2稳定版本_Spring Boot 2.4 正式发布,重大调整

    大家周末愉快啊,Spring Boot 2.3.5 没发布几天,你看,还是 1 周前发布的: 昨天又有粉丝留言说 Spring Boot 2.4.0 已经发布了: 我了个去,栈长赶紧跑到 Spring ...

  7. 「从零单排canal 01」 canal 10分钟入门(基于1.1.4版本)

    1.简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据 订阅 和 消费.应该是阿里云DTS(Data Transfer Servi ...

  8. java前后端分离框架_Spring Boot 入门及前后端分离项目实践

    本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发.Spring Boot ...

  9. easypoi导出excel 效率_Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率...

    关于poi.jxl和esayExcel的介绍自行百度. jxl最多支持03版excel,所以单个sheet页面最多只能导出65536条数据. 我直接将excel导入到浏览器并打开,以下统计导出时长指将 ...

最新文章

  1. 《Android传感器开发与智能设备案例实战》——导读
  2. 中兴c600olt数据配置_中兴上架Blade 20smart孝心版
  3. XSLT基本语法和第一个实例
  4. IDEA打包成可执行的JAR包
  5. Educational Codeforces Round 106 (Rated for Div. 2) C. Minimum Grid Path 奇偶 + 思维
  6. 大数据项目交付国标_在紧迫的期限内交付大型项目
  7. android webview java_Android WebView Java和JS通信
  8. 表格中点击获得行列的值、刷新页面
  9. Vim 多行剪切、复制和删除
  10. 教之初考试系统登录选择服务器,教之初考试系统
  11. vc使用默认的浏览器打开网页
  12. 华为服务器显示灯p02,华为服务器uid灯蓝色
  13. wps不想让读个文档显示为多个标签页,而是打开多个窗口,方便多个文档的比对工作?
  14. L9110电机驱动电路
  15. c1灯光语言,c1科目三路考灯光口诀
  16. VIPS 98经济型漏电继电器
  17. 【Go】三、函数与方法
  18. 安全测试之不安全的直接对象引用
  19. 课设——论文中的为什么要引用参考文献以及如何引用
  20. 组合递推公式证明(杨辉三角)

热门文章

  1. asyncdata 获取参数_nuxt的asyncData发送post请求如何传递FormData形式的参数
  2. android dialog 隐藏状态栏_Flutter-最近搞了个项目-启动页Splash,Navigator.pop无法关闭Dialog...
  3. 最大比例(压轴题 )
  4. CSS中meta标签的viewport
  5. 计算机系统概论实验报告3,东南大学计算机网络第四次实验报告.docx
  6. linux系统丢失用户环境文件夹,Linux 用户环境变量丢失故障及解决
  7. Oracle scheduler job管理
  8. android键盘多线程bug,按键精灵多线程运用,检测卡死线程,短信api调用,通知功能...
  9. android audio 自动播放,HTML5之audio无法自动播放的问题
  10. c语言main的性质,关于main()