Spring Boot与Spring MVC Spring对比及核心概念

目录
  • 一、SpringBoot、SpringMVC、Spring对比
    • Spring框架
    • SpringMVC
    • SpringBoot
  • 二、SpringBoot自动配置
  • 三、什么是SpringBootStarter?
  • 四、什么是SpringBootStarterParent
  • 五、嵌入式web容器
  • 六、SpringData
  • 七、springboot2.x新特性
    • 7.1.基础环境升级
    • 7.2.依赖组件升级
    • 7.3.默认软件替换
    • 7.4.新技术的引入
    • 7.5.彩蛋

一、Spring Boot 、 Spring MVC 、Spring对比

首先你需要明白一件事情:Spring Boot项目目的并不是替换Spring、SpringMVC,而是使他们用起来更加简单。

Spring 框架

Spring框架最核心的特性就是依赖注入DI(Dependency Injecttion)和控制反转IOC(Inversion Of Control)。如果你能够合理的使用DI和IOC,可以开发出松耦合、扩展性好的的应用程序。

Spring MVC

Spring MVC提供了一种友好的方式来开发Web应用程序。 通过使用诸如Dispatcher Servlet,ModelAndView和View Resolver,可以轻松开发Web应用程序。

Spring Boot

Spring 和 Spring MVC最大的弊病在于存在大量的配置,并且这些配置在不同的项目中具有很高的相似性。从而导致重复配置,繁琐而且杂乱!

Spring Boot期望通过结合自动配置和starters来解决了这个问题。 另外,Spring Boot还提供了一些功能,可以更快地构建可用于生产环境的应用程序。

二、Spring Boot 自动配置

Spring和Spring MVC应用程序里面有大量的XML或Java Bean配置。Spring Boot为解决这个问题,提供一种新的解决方案,新的思维方式。

springboot思考的方式:是不是可以更加智能一点,当Spring中加入一些新的jar包,加入一些配置,可以自动的影响应用内的bean的加载。 比如:Spring MVC JAR位于类路径中时,自动配置Dispatcher Servlet。当然,当这些自动的默认配置不符合我们的要求的时候,我们可以修改。修改之前加载的这一些Bean,配置修改之后会自动加载另外一些Bean。

三、什么是Spring Boot Starter?

Spring Boot Starter是一组被依赖第三方类库的集合。

如果你要开发一个web应用程序,就通过包管理工具(如maven)引入spring-boot-starter-web就可以了,而不用分别引入下面这么多依赖类库,spring-boot-starter-web一次性帮你引入下面的这些常用类库。

  • Spring — spring 核心, beans, context上下文, AOP面向切面
  • Web MVC — Spring MVC
  • Jackson — JSON数据的序列化与反序列化
  • Validation — Hibernate参数校验及校验API
  • 嵌入式 Servlet Container — Tomcat
  • 日志框架Logging — logback, slf4j

四、什么是Spring Boot Starter Parent

所有的Spring Boot项目默认使用spring-boot-starter-parent作为应用程序的父项目。

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.0.RELEASE</version>
</parent>

继承父项目的好处在于: 统一java版本配置和其他的一些依赖类库的版本。也就是说,你引入的第三方类库不要加版本号,父项目替你管理版本,而且是经过兼容性测试的。比你自己随便引入一个版本兼容性更好。

当然父项目只能帮你管理一些常用类库的版本,如果你引入一些不常用的jar,还是要自己管理版本号及兼容性!

五、嵌入式web容器

Spring boot打成jar包,默认包含嵌入式的web容器:tomcat。你可以简单的使用如下命令启动一个web服务:

java -jar springboot-demo.jar

这更有利于微服务的部署及微服务的构建、启动、扩容。Spring Boot还支持Jetty和Undertow作为web容器。

六、Spring Data

Spring Data的目标是提供一种更友好的方式或者是API来存取数据。包括对于关系型数据库和NOSQL数据的支持。比如:

  • Spring Data JPA — 关系型数据库操作的API,友好且易于使用
  • Spring Data MongoDB -MongoDB的操作API
  • Spring Data REST — 从持久层Repositories自动生成服务层API,暴露 REST APIs 接口。超级好用!

当然,Spring Data还有更多好用的特性和支持等待你去探索!

七、spring boot2.x新特性

7.1.基础环境升级

  • 最低 JDK 8,支持 JDK 9,不再支持 Java 6 和 7。Spring Boot 2.0 要求 Java 8 作为最低版本,许多现有的 API 已更新,以利用 Java 8 的特性。
    例如,接口上的默认方法,函数回调以及新的 API,如 javax.time。
  • 如果你正在使用 Java 7 或更早版本,则在开发 Spring Boot 2.0 应用程序之前,需要升级你的 JDK。

7.2.依赖组件升级

  • Jetty 9.4,Jetty 是一个开源的 Servlet 容器,它为基于 Java 的 Web 内容,例如 JSP 和 Servlet 提供运行环境。Jetty 是使用 Java 语言编写的,它的 API 以一组 JAR 包的形式发布。
  • Tomcat 8.5,Apache Tomcat 8.5.x 旨在取代 8.0.x,完全支持 Java 9。
  • Flyway 5,Flyway 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway 可以像 SVN 管理不同人的代码那样,管理不同人的 SQL 脚本,从而做到数据库同步。
  • Hibernate 5.2,Hibernate 是一款非常流行的 ORM 框架。
  • Gradle 3.4,Spring Boot 的 Gradle 插件在很大程度上已被重写,有了重大的改进。
  • Thymeleaf 3.0,Thymeleaf 3 相对于 Thymeleaf 2 有非常大的性能提升。

7.3. 默认软件替换

  • 默认数据库连接池已从 Tomcat 切换到 HikariCP,HikariCP 是一个高性能的 JDBC 连接池,Hikari 是日语“光”的意思。
  • redis客户端默认使用 Lettuce,替换掉Jedis.Lettuce 是一个可伸缩的线程安全的 Redis 客户端,用于同步、异步和反应使用。多个线程可以共享同一个 RedisConnection,它利用优秀 Netty NIO 框架来高效地管理多个连接,支持先进的 Redis 功能,如 Sentinel、集群、流水线、自动重新连接和 Redis 数据模型。

7.4.新技术的引入

  • 响应式编程WebFlux,重要的变革,后续章节会详细展示
  • 支持 Quartz,Spring Boot 1.0 并没有提供对 Quartz 的支持,之前出现了各种集成方案,Spring Boot 2.0 给出了最简单的集成方式。
  • 对Kotlin 的支持
  • JOOQ 的支持,JOOQ 是基于 Java 访问关系型数据库的工具包。JOOQ 既吸取了传统 ORM 操作数据的简单性和安全性,又保留了原生 SQL 的灵活性,它更像是介于 ORMS 和 JDBC 的中间层。

7.5.彩蛋

在 Spring Boot 1.0 项目中 src/main/resources 路径下新建一个 banner.txt 文件,文件中写入一些字符,启动项目时就会发现默认的 Banner 被替换了,到了 Spring Boot 2.0 现在可以支持 Gif 文件的打印,Spring Boot 2.0 在项目启动的时候,会将 Gif 图片的每一个画面,按照顺序打印在日志中,所有的画面打印完毕后,才会启动 Spring Boot 项目。

以上就是Spring Boot与Spring MVC Spring对比及核心概念的详细内容,更多关于SpringBoot SpringMVC Spring对比及概念的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java 程序员掌握 Spring Boot非常有必要

    Spring Boot从天而降 Spring Boot是企业级开发的整体整合解决方案,在现在企业项目开发中使用非常普遍,Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热潮,给企业开发带来了巨大的变革,可以说现在是Java程序员到了必须学习SpringBoot的时候. Spring已经足够好了? Spring框架真的太好了,任何一个java开发用过之后都会像上瘾一样,爱不释手.会在遇到新问题的时候,或者找到某一个方法的时候,都会去看一下spring是不是已经有同类

  • 基于SpringBoot核心原理(自动配置、事件驱动、Condition)

    前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本非常低,但是学习其实现原理的成本大大增加,需要先了解熟悉Spring原理.如果还不清楚Spring原理的,可以先查看博主之前的文章,本篇主要分析SpringBoot的启动.自动配置.Condition.事件驱动原理. 正文 启动原理 SpringBoot启动非常简单,因其内置了Tomcat,所以只需要通过下面几种方式启动即可: @SpringBootApplication(scanBas

  • spring boot与spring mvc的区别及功能介绍

    Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能.Spring MVC是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种XML. JavaConfig.hin处理起来比较繁琐.于是为了简化开发者的使用,从而创造性地推出了Spr

  • 一篇文章带你了解Java SpringBoot四大核心组件

    目录 一.Spring Boot Starter 1.1 Starter的应用示例 二.Spring Boot Autoconfigure 2.1 autoconfigure 简介 三.Spring Boot CLI 四.Spring Boot actuator 总结 一.Spring Boot Starter 1.1 Starter的应用示例 <dependency> <groupId>org.springframework.boot</groupId> <ar

  • 深入了解Springboot核心知识点之数据访问配置

    目录 自定义数据源配置 多数据源配置 使用Spring Data Repositories 将@Entity定义与Spring配置分开 配置JPA属性 配置Hibernate命名策略 配置Hibernat二级缓存 使用多个EntityManagerFactories 将Spring数据存储库公开为REST端点 环境:Springboot2.4.13 自定义数据源配置 @Bean @ConfigurationProperties(prefix="app.datasource") publ

  • Spring Boot与Spring MVC Spring对比及核心概念

    目录 一.SpringBoot.SpringMVC.Spring对比 Spring框架 SpringMVC SpringBoot 二.SpringBoot自动配置 三.什么是SpringBootStarter? 四.什么是SpringBootStarterParent 五.嵌入式web容器 六.SpringData 七.springboot2.x新特性 7.1.基础环境升级 7.2.依赖组件升级 7.3.默认软件替换 7.4.新技术的引入 7.5.彩蛋 一.Spring Boot . Sprin

  • Spring Boot与Spring MVC Spring对比及核心概念

    目录 一.SpringBoot.SpringMVC.Spring对比 Spring框架 SpringMVC SpringBoot 二.SpringBoot自动配置 三.什么是SpringBootStarter? 四.什么是SpringBootStarterParent 五.嵌入式web容器 六.SpringData 七.springboot2.x新特性 7.1.基础环境升级 7.2.依赖组件升级 7.3.默认软件替换 7.4.新技术的引入 7.5.彩蛋 一.Spring Boot . Sprin

  • Spring Boot示例分析讲解自动化装配机制核心注解

    目录 1. 自动化装配介绍 2. Spring Boot 自动化配置UML图解 3. Spring Boot 自动化配置核心注解分析 3.1 @Inherited 3.2 @SpringBootConfiguration 3.3 @EnableAutoConfiguration 3.4 @ComponentScan 3.5 @ConfigurationPropertiesScan 3.6 @AutoConfigurationImportSelector 3.7 @AutoConfiguratio

  • Spring boot按日切分spring boot的nohup.out日志文件的方法

    过大的日志文件维护起来存在诸多问题,所以最好是能够按日或按大小切分日志文件,便于查找需要的信息. 网上有各种各样的日志切分方法,有的有用,有的没用,有的还麻烦. 最后搬运最简单易用的切分方法,如下: 安装cronolog 以如下命令启动应用: nohup app.jar | /usr/local/sbin/cronolog /console-%Y-%m-%d.out >> /dev/null 2>&1 & 只是搬运而已,免得挨个方法试过去了 总结 以上所述是小编给大家介绍

  • Spring boot中@Conditional和spring boot的自动配置实例详解

    我们知道,spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子: Spring的JdbcTemplate是不是在Classpath里面?如果是,并且DataSource也存在,就自动配置一个JdbcTemplate的Bean Thymeleaf是不是在Classpath里面?如果是,则自动配置Thymeleaf的模板解析器.视图解析器.模板引擎 那个这个是怎么实现的呢?原因就在于它利用了Spring的条件化配置,条件化配置允许配置存在于应用中

  • Spring Boot配置特定属性spring.profiles的方法

    Spring Boot配置特定属性spring.profiles SpringBoot能使用application- {你的自定义profile名称myProfileName} .properties模式添加任何你指定配置文件到其属性文件. 要加载特定的配置文件属性文件,我们可以使用命令行选项-Dspring.profiles.active = myProfileName. 缺省默认SpringBoot是加载application.properties,无需任何-Dspring.profile.

  • Spring Boot高级教程之Spring Boot连接MySql数据库

    Spring Boot可以大大简化持久化任务,几乎不需要写SQL语句,在之前章节"Spring Boot 构建框架"中我们新建了一个Spring Boot应用程序,本章在原有的工程中与数据库建立连接. Spring Boot有两种方法与数据库建立连接,一种是使用JdbcTemplate,另一种集成Mybatis,下面分别为大家介绍一下如何集成和使用这两种方式. 1. 使用JdbcTemplate <dependency> <groupId>mysql</g

  • Spring Boot集成Quartz注入Spring管理的类的方法

    在Spring Boot中使用Quartz时,在JOB中一般需要引用Spring管理的Bean,通过定义Job Factory实现自动注入. Spring有自己的Schedule定时任务,在Spring boot中使用的时候,不能动态管理JOB,于是就使用Quartz来实现. 在Spring Boot中配置Quartz: import java.io.IOException; import java.util.Properties; import org.springframework.bean

  • 浅谈Java中Spring Boot的优势

    Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. Spring Boot 简化了基于 Spring 的应用开发,通过少量的代码就能创建一个独立的.产品级别的 Spring 应用. 作为一名 Java 程序员如果你已经厌恶了传统的开发模式,希望有一个全新的框架可以提供快速开发,简单集成的编程体验,强烈建议你学习了解 Spring Boot .

随机推荐