SpringBoot系列之了解SpringBoot的前置知识

Spring 框架

Spring框架是一个轻量的企业级的开发一站式解决方案,Spring框架已经是轻量级Java EE实际上的的行业标准。

Spring 模块

Spring是模块化的,开发者可以选择自己需要的模块进行集成。

Spring核心的模块包含:Core Container(核心容器)、Data Access(数据访问)、AOP(面像切面)、Web(Web集成功能)、Test(测试),等等。

除了Spring Core Container(Spring核心容器)是必须的,其他的组成 Spring 框架的每个模块都可以单独存在,或者与其他一个或多个模块联合实现。

Spring 核心容器提供了 Spring 框架的基本功能,管理着Spring应用中bean的创建、配置和管理。

Spring 核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用DI将应用程序的配置和依赖性规范与实际的应用程序代码分开。

下面是Spring核心模块的概要:

  • Spring 上下文:

Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。

Spring 上下文提供了一种框架式的对象访问方法,有些象JNDI注册器。

Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。

Spring 上下文和Bean工厂都是 bean 容器 的实现。

  • Spring AOP:

通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。

Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。

  • Spring DAO:

JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。

Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

  • Spring ORM:

Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

  • Spring Web 模块:

Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。

  • Spring MVC 框架:

MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 优点

Spring框架有如下优点:

  • 低侵入式设计,代码污染极低。

  • 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。

  • Spring的DI机制/IoC容器,降低了业务对象替换的复杂性,提高了组件之间的解耦。

  • Spring的AOP支持允许将一些通用任务,例如安全、事务、日志等进行集中式管理,从而提供了更好的复用。

  • Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问,Spring Data则提供了对NoSQL的良好支持。

  • Spring并不是针对应用的某一层,而是对应用的各层都提供了解决方案。

  • Spring具有高度的开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

Spring 5

Spring在2017 年9月发布Spring 5的通用版本 (GA),这是自 2013 年12月以来第一个主要 Spring Framework 版本。

Spring 5 提供了一些人们期待已久的改进,兼容 Java 8 和 Java 9,还采用了一种全新的编程范例,并提供了反应式流的支持。

Spring 5主要有以下新特性:

  • 升级到 Java SE 8 和 Java EE 7
  • 反应式编程模型
  • 使用注解进行编程
  • 函数式编程
  • 使用 REST 端点执行反应式编程
  • HTTP/2 支持
  • Kotlin 和 Spring WebFlux
  • 使用 Lambda 表达式注册 bean
  • Spring WebMVC 支持最新的 API
  • 使用 JUnit 5 执行条件和并发测试
  • 使用 Spring WebFlux 执行集成测试
  • 包清理和弃用
  • 对 Spring 核心和容器的一般更新

Spring 生态

  • Spring Boot:一站式快速开发解决项目
  • Spring Cloud:提供对分布式系统的支持
  • Spring Data:提供对主流的关系型及NOSQL型数据库的封装支持
  • Spring Security:支持系统授权、认证的支持
  • Spring Session:提供对session管理的支持
  • Spring Batch:提供对大数据的批处理简化处理优化的支持
  • Spring Social:提供对社交网络API的集成,如Facebook、Google等
  • Spring AMQP:提供对AMQP的消息支持
  • Spring LDAP:提供并简化使用LDAP的支持
  • Spring XD:用来简化对大数据应用开发
  • Spring Integration:通过消息机制对企业集成模式EIP的支持
  • Spring Mobile:支持对手机设备检测等功能
  • Spring for Android:提供在安卓平台消费restful api的支持
  • Spring Web Flow:基于spring mvc提供对向导流程式的开发
  • Spring Web Services:提供基于SOAP/Web协议服务支持

Spring Boot

什么是Spring Boot

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

Spring Boot 默认配置了很多框架的使用方式,就像 Maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架。

它的核心设计思想是:约定优于配置。

Spring Boot 所有开发细节都是依据此思想进行实现的。

Spring Boot 是一套全新的框架,它来自于 Spring 大家族,因此 Spring 所有具备的功能它都有并且更容易使用;同时还简化了基于 Spring 的应用开发,通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。

SpringBoot在Spring生态中的位置:

Spring Boot 的优点

  • 使编码变得简单 : 推荐使用注解,组件自动装配,外部化配置,高度封装,开箱即用

  • 使配置变得简单: 约定大于配置,主流框架无配置集成,专注核心业务,提供快速集成新技术、快速构建、自动配置的能力

  • 使部署变得简单: 内嵌Tomcat、Jetty等Web容器,支持独立运行

  • 使监控变得简单: 自带项目监控实现

Spring Boot 2.0 的新变化

  • 基于Spring 5 构建,支持Spring 5的新特性

  • 为组件的响应式编程提供了简化配置,如Reactive Spring Data,Reactive Spring Security等

  • 依赖版本升级,如要求Java8以上并支持Java 9,Maven3.2或更高版本,Tomcat 8或更高版本,Hibernate 5.2或更高版本等

Maven

  • 什么是Maven

Apache Maven是一个项目管理和理解工具,它基于项目对象模型(POM)的概念,它可以管理项目的构建、报告和文档。

  • Maven的parent和modules

Maven通过元素声明父项目依赖,父项目声明的依赖会自动传递到子项目。

在项目的 parent 层,可以通过 元素来管理 jar 包的版本,让子项目中引用一个依赖而不用显式声明版本号。


links:

  • ijiangtaonet
  • Spring体系常用项目一览
  • Spring Docs 4.0.x Overview
  • IBM-Spring5
  • 开源中国-Spring Framework 5.0 新特性
  • IBM-Spring Framework 5 中的新特性
  • Spring Framework Documentation Version 5.1.4.RELEASE
  • blog.csdn.net/sinat_26342…
  • my.oschina.net/ijiangtao/b…

author: ijiangtao.net


转载于:https://juejin.im/post/5c6b9435e51d457fd6233aa1

你可能感兴趣的:(java)