Spring Boot系列1

因博主最近看Spring Boot相关书籍,结合之前关于Spring Boot的使用,整理记录一下Spring Boot系列知识

1 Spring Boot简介

书中第一句说道:认识一个事物最好的方式就是首先去了解它的历史 . 只有知道其根源和发展才能更好的地去理解它的发展和演变,也才能更好的学会和使用它.

Spring框架

Spring框架是由Rod Johnson在2001年开发的一个开源框架,主要是为了解决企业级应用程序的开发的复杂性.Spring提倡"零"侵入设计原则,颠覆了传统的编程模式.其中重要的控制反转(Inversion of Control,简称IOC) 和依赖注入(Dependency Injection,简称DI).使用容器来管理协调Bean对象的关系,替代传统的程序代码管理.另外,Spring把面向切面编程(AOP)集成.

Spring从IOC容器,到集成了AOP,MVC,OR/Mapping等服务,到现在能提供非常完善的企业应用框架.

Spring的问题和弊端

Spring带来很多有点的同时,也带来了一些问题和弊端.如太多样板化的配置、烦琐复杂的使用过程,以及大量的XML配置文件,复杂的依赖管理.

1 Spring到Spring Boot

1 EJB到Spring

EJB(Enterprise Java Bean)是为分布式应用服务的。分布式是针对大型应用构造的跨平台的协作计算.

EJB系统架构图:

image-20210829212319550

EJB的基础是RMI(Remote Method Invocation,远程方法调用), RMI利用Java对象序列化的机制实现分布式计算,实现远程类对象的实例化以及调用.

对于中小型的项目,EJB框架过于笨重,复杂.

Spring框架的目的主要是为了解决企业应用开发的复杂性,它主要的功能时使用基本的Java Bean代替EJB.

Spring框架的核心功能是:解耦依赖(DI)、系统模块化(AOP)。Spring“不重复发明轮子”,而是去集成业内已有的优秀解决方案。

对于分布式系统架构,可使用Spring Boot 和Spring Cloud方案.

Spring微服务系统图:

image-20210829212920295

2 Spring框架

Spring框架首次在2003年6月的Apache2.0使用许可中发布,第一个具有里程碑意义的版本是2004年3月发布的1.0.

Spring发布历史:

  • 2003年,Spring0.9发布。2003年11月,Ben Alex将Acegi Security的代码贡献给Rod和Juergen,2006年5月发布Acegi Security。
  • 2006年6月发布Spring Webflow 1.0。2006年8月发布Spring LDAP。2006年10月发布Spring 2.0。
  • 2007年5月发布Spring Batch。2007年11月发布Spring 2.5。Spring 2.5是Spring 2.1各个里程碑版本的终结。
  • 2011年6月发布Spring Data JPA 1.0。2011年12月发布Spring 3.1
  • 2014年4月发布Spring Boot 1.0。2014年12月发布Spring 4.1.3
  • 2015年7月发布Spring 4.2
  • 2016年6月发布Spring 4.3
  • 2017年9月发布Spring 5.0。2017年11月发布Spring Boot v2. 0.0.M7
  • 2018年3月1日发布Spring Boot v2.0.0.Release;2018年4月5日发布Spring Boot 2.0.1.Release版本,是目前最新版本。
  • 截止2021年8月发布最新的Spring Boot v2.6.0-M2版本

3 Spring框架的核心模块

Spring架构图:

image-20210829213904912

1 核心容器模块

核心容器包含Beans,Core,Context,EL表达式.

Core模块封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类。Beans模块中的主要组件是BeanFactory,它是工厂模式的实现。Context模块是一个配置文件,向Spring框架提供上下文信息。EL模块提供强大的表达式语言支持。

2 AOP,Aspects模块

AOP模块提供了符合AOP Alliance规范的面向切面的编程实现.可以提供比如日志记录、权限控制、性能统计等通用功能,可降低业务逻辑和通用功能的耦合。Aspects模提供了对AspectJ的集成,AspectJ提供了比Spring ASP更强大的功能。

3 数据访问/集成模块

包括JDBC,ORM,OXM,JMS和事务模块.

事务模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无须在代码中进行事务控制了,而且支持编程和声明性的事务管理.

JDBC模块提供了一个JBDC的样例模板,使用这些模板能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处。
ORM模块提供与流行的“对象-关系映射”ORM框架的无缝集成,包括Hibernate、JPA、MyBatis等。
OXM模块提供了一个对Object/XML映射实现,将Java对象映射成XML数据,或者将XML数据映射成Java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。
JMS(Java Messaging Service)模块提供一套“消息生产者、消息消费者”模板以便更加简单地使用JMS, JMS用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

4 Web/Remoting模块

包括Web,Web-Servlet,Web-Struts,Web-Porlet模块.

Web模块提供了基础的Web功能。例如多文件上传、集成IoC容器、远程过程访问(RMI、Hessian、Burlap)以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问。
Web Servlet模块提供了一个Spring MVC Web框架实现。
Web Struts模块提供了与Struts无缝集成,Struts1.x和Struts2.x都支持.

5 Test模块

Test模块支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能,比如在测试Web框架时,模拟Http请求的功能。

2 Spring Boot简介

1 Spring Boot说明

Spring Boot由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot是伴随着Spring 4.0诞生的。

Spring Boot框架遵循 约定优于配置 的思想, 致力于快速开发应用.

1 Spring Boot核心模块

image-20210829220241603

1 Spring-boot

Spring Boot的核心工程.

2 starters

Spring Boot的启动服务工程.

3 autoconfigure

Spring Boot实现自动配置的核心工程.

4 actuator

提供Spring Boot应用的外围支撑性功能.

5 tools

提供了Spring Boot开发者的常用工具集.诸如,spring-boot-gradle-plugin、spring-boot-maven-plugin就在这个模块里面.

6 cli

Spring Boot命令行交互工具,可用于使用Spring进行快速原型搭建.

3 约定优于配置

Spring Boot利用了JavaConfig的配置模式以及“约定优于配置”(Convention Over Configuration, COC)的理念,极大地简化了基于Spring MVC的Web应用和REST服务的开发.

Spring中使用约定好的注解来表示各层中的Bean类:

  • @Component 表示一个普通的Spring的Bean类
  • @Controller 表示一个控制器组件类
  • @Service 表示一个业务逻辑组件类
  • @Repository 表示一个DAO组件类
约定优于配置(Convention Over Configuration, COC)也称为按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

4 总结

关于Spring和Spring Boot的发展历史,基本如上述所说,对于Spring和Spring Boot的成功,至今还是企业使用的主流对象,其成功的原因是通用. 正如Java的那句话, 一次编写,到处运行.大家遵守一定的约定,可以减少开发中很多问题,从而更关注业务功能本身,做成更好的作品和东西也将变得指日可待.我们每个月人也是一样的,不但要变得通用,还需要在某个方面冒尖,这样在工作和生活中,才能更加游刃有余,无所畏惧.

猜你喜欢

转载自blog.csdn.net/ABestRookie/article/details/119986838