SpringBoot系列-前置知识
title: SpringBoot系列-前置知识
date: 2019-02-19 13:08:25
categories:
- tech
- java
- framework
- Spring
- SpringBoot
tags: [Java,Spring,SpringBoot,Spring5,Maven]
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 框架提供上下文信息。
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生态中的位置:
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>元素声明父项目依赖,父项目声明的依赖会自动传递到子项目。
在项目的 parent 层,可以通过 <dependencyManagement> 元素来管理 jar 包的版本,让子项目中引用一个依赖而不用显式声明版本号<version>。
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
- https://blog.csdn.net/sinat_26342009/article/details/87703704
- https://my.oschina.net/ijiangtao/blog/3011844
- https://juejin.im/post/5c6b9435e51d457fd6233aa1
author: ijiangtao.net