0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Spring Boot从零入门1 详述

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:18 次阅读

[TOC]

1 开始之前

在开始学习Spring Boot之前,我之前从未接触过Spring相关的项目,Java基础还是几年前自学的,现在估计也忘得差不多了吧,写Spring Boot自己的学习过程前,同时给一起学习的同学们做个鼓励,相信自己能够学好,大概了解了下Spring的整个发展,还是有很多铺垫知识是要知道的,而且就算知道,没有实践经验可能还是不能够很深入的体会实际项目中有什么不一样。总之,干就是了,然后就是坚持走下来,至于为什么要学习Spring Boot,这也是我自己的一个选择,架构之路中一环,武功中的一个大招,期待学会这个大招。Spring Boot已经是Spring的最上层了,从上而下,从新到旧,打通整个Spring脉络。

2 名词术语

当然学习之前,肯定要去调研一番,了解各种跟Spring相关的名词术语,因为实在太多了,如果不去了解,对后面的学习也会造成困惑,难以理解,尤其是从未接触过Java Web,我们所学习跟Spring相关的知识最终都是如何更好更快的构建企业级Web应用。下面是我学习前所了解的一些名词术语和该术语所扮演的功能角色解释。

名词术语 释义
SQL & NOSQL NOSQL,Not Only SQL, 非关系型的数据库统称,常见如HBase,BigTable,Redis,Cassandra,LevelDB,MongoDB,CouchDB;SQL这里泛指RDBMS,即关系型数据库管理系统,常见如Oracle,DB2,SQL Server,Mysql等
Nginx Nginx是一款轻量级的Web服务器、正/反向代理服务器、负载均衡,邮件代理服务器和通用的TCP/UDP代理服务器,最初由俄罗斯人Igor Sysoev编写,BSD许可 。由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。
Jetty Jetty 作为一个独立的Servlet 引擎可以独立提供Web 服务,但是它也可以与其他Web 应用服务器集成,所以它可以提供基于两种协议工作,一个是HTTP,一个是AJP 协议。与Tomcat相比各有特点,作为后起之秀,总是带着新鲜和快速成长的特性
Netty Netty是异步事件驱动(NIO,非阻塞IO)的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。而提供类似功能的有Tomcat和Jetty,Tomcat是基于Http协议的,而Netty支持各种协议和定制协议,包括Http、Websocket、SSL&TLS、Protobuf、RTSP、zlib&gzip、LFS等;Netty更是一种网络编程框架,定制化开发更方便,类似的还有MINA
Undertow Undertow是一种用Java编写的灵活的高性能Web服务器,可提供基于NIO的阻塞和非阻塞API。同样的支持Http、Websocket协议
JDBC Java DataBase Connectivity,java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JPA JPA 伴随 Java EE 5 发布,Sun 官方提出的一套 Java 持久化规范,它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术,结束现在 Hibernate,TopLink,JDO 等 ORM 框架各自为营的局面。
Servlet 在代码层面,Servlet其实就是一个接口,定义了一套处理网络请求的规范,所有实现Servlet的类,都需要实现它所定义的五个方法;在定义上,它就是一套Java EE规范,Tomcat & Jetty都是运载Servlet的容器
MyBatis MyBatis 是一款优秀的持久层框架,MyBatis是iBatis的升级版,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 目前为止最新版本为3.5.3
Hibernate Hibernate是一种ORM框架,全称为 Object Relative DateBase Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象,目前为止最新版本为 Hibernate ORM 5.4.7
struts2 Apache Struts是一个免费的开源MVC框架,用于创建优雅的现代Java Web应用程序。它支持约定胜于配置,可以使用插件体系结构进行扩展,并且附带了支持REST,AJAX和JSON的插件。目前最新版本是2.5.20
Struts Spring Hibernate(SSH) SSH 框架是由 struts2、spring、hibernate 三大框架组合起来的一套总框架;struts 的核心思想就是实现 MVC;Spring 的核心思想就是解耦,也就是代码中不出现 new 实现类的代码,我们创建了接口不用关心实现类是谁;hibernate 的核心思想就是(ORM - 对象关系映射) 连接数据库,我们不用在数据库写创建表的语句
Spring 一个开放源代码框架,为JVM上的基于响应和基于servlet的应用程序提供端到端支持,使用基本的JavaBean代替EJB。是一个用于创建Java企业应用程序的流行框架。 它已经超越了最初的产品范围,涵盖了使用Spring框架并围绕Spring框架构建的整个项目系列。Spring的核心技术是依赖项注入(DI),事件,资源,i18n,验证,数据绑定,类型转换,SpEL,AOP。现在Spring框架已经发展到了5.0了
Spring MVC Spring MVC是一个松散耦合的MVC框架,是Spring框架众多组件中的一个,是一个使你能够根据模型-视图-控制器设计模式实现Web应用程序的组件。而Struts是紧密耦合的。对于企业级应用程序,你需要构建松散耦合的应用程序,因为它会使应用程序更可重用,更健壮以及更分布式。
Spring WebFlux 是Spring5中的新增模块,开发人员可以使用 WebFlux 创建高性能的 Web 应用和客户端,名称中的 Flux 来源于 Reactor 中的类 Flux,该模块中包含了对反应式 HTTP、服务器推送事件和 WebSocket 的客户端和服务器端的支持;在服务器端开发中,WebFlux 支持两种不同的编程模型:第一种是 Spring MVC 中使用的基于 Java 注解的方式;第二种是基于 Java 8 的 lambda 表达式的函数式编程模型
Spring Cloud Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务注册和发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态,负载均衡)。微服务架构集大成者,云计算最佳业务实践。Spring Cloud基于Spring Boot实现,使用HTTP的RESTful风格API作为调用方式。它所包含的多个子项目共同构建了微服务架构体系,总体来说,Spring Cloud相比Dubbo内容更丰富,而且社区和生态相比也较Dubbo好,不过学习成本相对Dubbo要高
Dubbo 阿里巴巴在2011年开源,2013年停止更新,但在2017年9月又重启维护并发布了新版本,Dubbo采用Zookeeper作为注册中心,RPC作为服务调用方式,致力于提供高性能和透明化的RPC远程服务调用方案。它与Spring无缝集成,基于服务提供方(服务端)与服务调用方(客户端)角色构建简单模型,其优点是使用方便、学习成本低
Spring Cloud Data Flow 将企业连接到物联网—移动设备,传感器,可穿戴设备,汽车等。Spring Cloud Data Flow提供了用于创建可组合数据微服务的统一服务,这些微服务可解决流和基于ETL的数据处理模式。
Reactive stack & Servlet stack Spring5 提供了 Servlet 和反应式这两种 Web 技术栈,在应用层面充分向异步和非阻塞并发靠拢。
微服务 微服务是一种分布式系统架构,是一种思想,是一种设计原则,Spring Cloud是开发微服务的主流方案,而Spring Boot以Spring Cloud为核心,让开发微服务更快捷方便;开发微服务框架还有Netflix OSS(微服务实践鼻祖)、Dubbo、gRPC等
Service Mesh(服务网格) 服务间通信的基础设施层,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控,相关Service Mesh开源项目有Linkerd、Envoy、Istio、Conduit、nginMesh、Kong等,与微服务相比,微服务更像是一个服务之间的生态,专注于服务治理等方面,而服务网格更专注于服务之间的通信,以及和 DevOps 更好的结合

概念还是有点多的,而是基本指的大的软件框架的概念,具体到其中每一个都可以延伸出很多知识,更多可以参见参考链接详细了解。不过这只是开始,以后可以慢慢了解,并在实战中了解每一个术语本身所具有的特性。

3 Spring Boot特性与优缺点

既然我选择了从上而下,从新而旧的方式去入手,那么我们对Spring Boot需要更多的了解,以及Spring Boot在整个技术栈中扮演了什么角色?

Spring Boot的口号是BUILD ANYTHING WITH SPRING BOOT,用Spring Boot构建一切!

从官方网站上的构件图可以看出,Spring Boot是一个大容器,是构建所有基于Spring的应用程序的入口,Spring Boot旨在通过最少的Spring前期配置使得我们尽快启动并运行项目,例如Spring Boot对比Spring MVC 最大的优点就是使用简单,约定大于配置,不会像之前用Spring MVC的时候,时不时被xml 配置文件搞的晕头转向。从这里看其实Spring Boot并不是我们构建Web应用的核心,也可以知道我们可以快速上手Spring Boot,但是我们却可以通过这个入口抽丝剥茧去了解它所包含的所有。我们可以列一下Spring Boot的特性:

可以使用Spring Initializr在几秒钟内快速入门

通过Spring Initializr(https://start.spring.io/),我们可以基于Web UI快速构建一个Spring Boot项目

构建输出任何内容:REST API,WebSocket,Web,流,任务等

总之就是Web相关都行!

简化安全策略集成

对SQL和NoSQL的非常友好的支持

支持运行期内嵌容器:Tomcat,Jetty和Undertow

非常轻松地开发和测试我们的Web应用程序

开发者生产工具,如LiveReload 和 Auto Restart

自动版本依赖管理

避免编写大量样板代码,注释和XML配置。

可用于生产的功能,例如跟踪,指标和运行状况

可以用你喜欢的开发IDE,如Spring Tool Suite(STS)、IntelliJ IDEA(IDEA)或NetBeans等

它提供了CLI(命令行界面)工具,可以非常轻松快捷地从命令提示符处开发和测试Spring Boot(Java或Groovy)应用程序

提供了许多插件

可使用Maven和Gradle等构建工具非常轻松地开发和测试Spring Boot应用程序

可以非常轻松地与嵌入式数据库和内存数据库一起使用

有了上面的这些特性,Spring Boot能给我带来什么好处或者限制呢:

对Spring进行了包装,使得易于理解和开发Spring应用,简化配置、测试、打包和集成第三方工具

快速配置项目,管理依赖版本,快速配置单元测试,集成测试等,提高开发效率和生产率

只能解决类似Spring Framework的问题,而不能解决新的问题,即Spring FrameWork能做的就能做

将现有或旧版Spring Framework项目转换为Spring Boot应用程序会很费劲

4 总结

本篇从零开始详述了Spring Boot相关的名词术语,从零开始了解Spring Boot,并讲述了Spring Boot的特性与优缺点。通过对Spring Boot的详述,让我们对它有了一个基本的了解,接下来,我们开始进入Spring Boot的内部和实战。

5 更多

更多关于Spring Boot相关的学习,可以持续关注我的公众号小白AI或者微信小程序小白AI博客。

本文属于原创,转载注明出处,欢迎关注CSDNfreeape或微信小程序小白AI博客

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8294

    浏览量

    83184
  • spring
    +关注

    关注

    0

    文章

    333

    浏览量

    14193
收藏 人收藏

    评论

    相关推荐

    Spring事务失效的十种常见场景

    ,而Spring的声明式事务功能更是提供了极其方便的事务配置方式,配合Spring Boot的自动配置,大多数Spring Boot项目只需
    的头像 发表于 12-11 15:03 592次阅读

    如何在Spring Boot应用程序中整合ZXing库

    在数字化时代,二维码已经成为了信息交流的一种常见方式。它们被广泛用于各种应用,从产品标签到活动传单,以及电子支付。本文将向您展示如何在Spring Boot应用程序中整合ZXing库,以创建和解析QR码。
    的头像 发表于 12-03 17:39 778次阅读

    Spring Boot 3.2支持虚拟线程和原生镜像

    Spring Boot 3.2 前几日发布,让我们用 Java 21、GraalVM 和虚拟线程来尝试一下。
    的头像 发表于 11-30 16:22 416次阅读

    Spring布能用来搭建基础架构吗

    Spring Boot 是一个用于简化 Spring 应用程序开发的框架,它利用 Spring 框架的强大功能,使得基础架构的搭建变得更加简单、轻量级、易于维护。在本文中,我们将详细讨
    的头像 发表于 11-16 10:56 248次阅读

    Spring Boot 的设计目标

    什么是Spring Boot Spring BootSpring 开源组织下的一个子项目,也是 S
    的头像 发表于 10-13 14:56 383次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的设计目标

    Spring Boot的启动原理

    可能很多初学者会比较困惑,Spring Boot 是如何做到将应用代码和所有的依赖打包成一个独立的 Jar 包,因为传统的 Java 项目打包成 Jar 包之后,需要通过 -classpath 属性
    的头像 发表于 10-13 11:44 441次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的启动原理

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是一个 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eureka 的。 Spring Boot 启动 E
    的头像 发表于 10-10 11:40 479次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>启动 Eureka流程

    Spring Boot Actuator快速入门

    不知道大家在写 Spring Boot 项目的过程中,使用过 Spring Boot Actuator 吗?知道 Spring
    的头像 发表于 10-09 17:11 405次阅读

    Spring Boot时配置JSON序列化选项的几种方法

    Spring Boot Web 项目中,当使用JSON格式接收数据和返回数据的时候,Spring Boot 默认使用一个ObjectMapper实例来序列化响应和反序列化请求。 在本
    的头像 发表于 10-09 10:26 1326次阅读

    Spring Boot配置加载相关知识

    Spring BOOT 启动参数 在Java Web的开发完成后,以前我们都会打包成war文件,然后放大web容器,比如tomcat、jetty这样的容器。现在基于SpringBoot开发的项目
    的头像 发表于 10-07 15:47 296次阅读

    Spring Boot如何实现异步任务

    Spring Boot 提供了多种方式来实现异步任务,这里介绍三种主要实现方式。 1、基于注解 @Async @Async 注解是 Spring 提供的一种轻量级异步方法实现方式,它可以标记在方法
    的头像 发表于 09-30 10:32 563次阅读

    Gradle构建的多模块Spring Boot项目

    构建的多模块 Spring Boot 项目,JDK 版本为8,IDEA 版本为 2022.3.1 。 1. 创建项目 打开IDEA,选择菜单:File -> New -> Project,在其
    的头像 发表于 09-25 14:46 1283次阅读
    Gradle构建的多模块<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>项目

    Spring Boot Starter需要些什么

    ,写一个pulsar-spring-boot-starter是非常有必要的,在此之前,我们先看看一个starter需要些什么。 Spring Boot Starter spring-boot
    的头像 发表于 09-25 11:35 518次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> Starter需要些什么

    Spring Boot虚拟线程和Webflux性能对比

    早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。
    发表于 09-24 14:54 392次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>虚拟线程和Webflux性能对比

    Spring Boot如何优雅实现数据加密存储、模糊匹配和脱敏

    近来我们都在围绕着使用Spring Boot开发业务系统时如何保证数据安全性这个主题展开总结,当下大部分的B/S架构的系统也都是基于Spring Boot + SpringMVC三层架
    的头像 发表于 06-19 14:42 1203次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>如何优雅实现数据加密存储、模糊匹配和脱敏