初识 Springboot
创始人
2024-06-02 21:44:48
0

初始 Springboot

第一章 初始Springboot


文章目录

  • 初始 Springboot
  • 前言
  • 一、从JavaEE到Spring
    • JavaEE
    • Spring
  • 二、Spring的技术发展趋势
    • xml
    • java注解
    • 习惯优于配置
    • 微服务
    • 启动速度
  • 三、Spring的体系结构
    • Core Container
    • AOP&Instrumentation
    • Message
    • Data Access/Integration
    • Web
    • Test
  • 四、Spring社区
  • 五、其他开源项目
    • springdoc
  • 总结


前言

Springboot的由来,Spring、SpringMvc的技术发展趋势,Spring Framework的体系结构,Spring社区。


一、从JavaEE到Spring

JavaEE

J2EE出现在1998年(参见https://zh.wikipedia.org/wiki/Java_EE),全称Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定的工业标准,或者说,它是在SUN公司领导下,多家公司参与共同制定的企业级分布式应用程序开发规范。由于Java的版本迭代,J2EE名称也要做相应变更,因此2006年,java6.0发布后,J2EE改名为 JavaEE,JavaEE即Java企业版。2022年,开发还在使用的JavaEE组件主要有Java Servlet、Java API for RESTful Web Services (JAX-RS)、Java Persistence、Java Transaction API (JTA) 等。更多信息

Spring

JavaEE规范固然先进、完善,但整个框架臃肿、低效、脱离现实,这种低效一方面体现在代码开发上,另一方面也体现在JavaEE发布的年代,计算机算力普遍不高,程序执行效率低,实际这也是JVM虚拟机的固有缺陷,直到2022年GraalVM的发布,才有官方层面提升了代码执行效率。
基于上述原因,Rod Johnson在2002年启动了轻量级容器框架Spring的开发。他从实际需求触发,提出了轻便、灵巧,易于开发、测试和部署等特性,通过不断丰富内涵,于2004年3月24日,发布了1.0正式版。随着Spring 1.0的发布,同年又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着当年的Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此Spring一战功成,Rod Johnson也必将成为一个改变Java世界的大师级人物。
Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。


二、Spring的技术发展趋势

xml

spring 1.0刚发布时,应用开发还以传统模式为主,一个系统往往时一个单体架构的服务,所有模块糅合在一起。最初的Spring往往和Struct、Hibernate搭配使用,即J2EE SSH开发框架,这时的Spring往往使用xml配置bean和bean的properties。

java注解

spring 2.5发布后,开始支持Java1.6、Java EE5,Java1.6引入了注解,spring2.5基于java注解开发了通过注解配置bean和bean注入的方案。

习惯优于配置

spring虽然提供了xml配置、java注解配置多种方式来进行bean的配置和依赖的注入,但一些常用组件如数据库、MQ的配置仍然相当繁琐。
对于新手来说,Java EE应用开发的入门门槛仍然很高。
2014年4月SpringBoot 1.0正式发布,Spring Framework 4.0也随之一起发布,Boot即Bootloader,SpringBoot即Spring引导器,通过SpringBoot可以方便的创建Java EE应用。

SpringBoot 2.0发布于2018年,带来了对OpenJDK1.8的支持,Spring Framework 5.0也随之一起发布,此外,还有一些组件的常规升级。除此之外没有太大变化。

微服务

伴随着数据规模的急速增长,海量请求的涌入,单体架构已经无法满足高并发、高可用的应用场景,服务开始从单体架构向无状态微服务架构转变。springcloud与2016年推出第一个版本,springcloud提供了服务注册发现、服务降级熔断、服务网关、负载均衡、RPC调用的能力,帮助应用开发者快速开发微服务架构的应用。

启动速度

一直以来,Java打包的字节码程序的启动速度和内存占用都为人诟病,Oracle等一批大厂也在着力解决这个问题。终于,在2022年Oracle推出了GraalVM,GraalVM通过AoT技术将java代码编译为平台原生的二进制程序,基于该技术生成的二进制程序的启动速度和内存占用都有大幅改善。
SpringBoot 3.0发布带来了对GraalVM的支持。


三、Spring的体系结构

用spring framework官方文档的一张图来呈现spring的体系结构。
spring-overview
spring framework是灵活的,引入不通的模块可搭建不同需求的应用,满足用户不同的应用场景。

Core Container

  • Core:spring-core
  • Beans:spring-beans
  • Context:spring-context,spring-context-support
  • SpEL:spring-expression

Core、Beans模块提供了最基础的部分功能,包括IoC和DI特性。
Context模块建立在Core、Beans之上,Context模块的spring-context提供了一种类似于JNDI注册器的框架式的对象访问方法。它继承了Beans的特性,并额外提供了国际化支持、事件传播、资源加载、Context透明创建,同时,它提供了一个Servlet容器。此外,它还支持一些Java EE的特性,诸如EJB,JMX,远程调用。ApplicationContext接口是Context模块的关键所在。Context模块的spring-context-support提供了集成第三方库到ApplicationContext的支持,诸如caching(EhCache,Guava,JCache),mailing(JavaMail),scheduling(CommonJ,Quartz)和模板引擎(FreeMarker,JasperReports,Velocity)。
SpEL模块提供了一个功能强大的表达式语言,用来查询和控制一个运行时对象。

AOP&Instrumentation

  • AOP:spring-aop,spring-aspects
  • Instrumentation:spring-instrument,spring-instrument-tomcat

AOP模块的spring-aop提供一个标准的面向切面编程的实现,通过AOP模块可以方便的定义方法拦截器和切点,以干净利索的分离业务代码。AOP模块的spring-aspects提供了AspectJ的集成。
Instrumentation模块的spring-instrument提供类检测支持和类加载器实现,Instrumentation模块的spring-instrument-tomcat模块包含spring的tomcat检测代理。

Message

  • Message:spring-messaging

Message模块包含Spring Integration项目的关键抽象,诸如Message,MessageChannel,MessageHandler等。此外,它还包括一组用于方法上的消息映射注解,类似于Spring MVC的基础注解。

Data Access/Integration

Data Access/Integration由JDBC,ORM,OXM,JMS和Transaction组成。

  • Data Access/Integration:spring-jdbc,spring-tx,spring-orm,spring-oxm,spring-jms

Data Access/Integration模块的spring-jdbc提供了JDBC抽象层,它消除了需要针对特定数据库供应商的错误代码进行冗长的JDBC编码和解析。
Data Access/Integration模块的spring-tx提供了对实现特殊接口的类和所有POJO的编程式和声明式事务管理。
Data Access/Integration模块的spring-orm提供了流行的对象关系映射APIs,包括JPA,JDO和Hibernate。结合声明书事务使用十分方便。
Data Access/Integration模块的spring-oxm提供了对象XML映射的抽象层,它的实现包括JAXB,Castor,XMLBeans,JiBX和XStream。
Data Access/Integration模块的spring-jms包括生产和消费消息特性,从Spring Framework 4.1开始提供spring-messaging的集成。

Web

  • Web:spring-web,spring-webmvc,spring-websocket,spring-webmvc-portlet

Web模块的spring-web提供基础的面向web集成特性,诸如文件上传功能、使用Servlet监听器初始化Ioc容器,面向web的ApplicationContext。此外,它还包括一个HTTP客户端和面向web部分的Spring远程支持。
Web模块的spring-webmvc也称为Web-Servlet模块,它包括Spring的Model-view-controller(MVC),针对web应用的REST Web Services实现。Spring MVC框架在域模型和web表单之间提供了一个清晰的分离,并能够与Spring Framework的所有其他功能集成。
Web模块的spring-websocket提供了websocket支持,可以通过注解开启一个websocket服务端。
Web模块的spring-webmvc-portlet也称为Web-Portlet模块,它提供了在Portlet环境种使用的MVC实现,类似于基于Servlet的spring-webmvc的功能。

Test

  • Test:spring-test

Test模块支持使用JUnit对spring组件进行单元测试和继承测试。它提供了Spring ApplicationContext的一致性加载和这些上下文的缓存,它还提供了mock对象。


四、Spring社区

Spring 拥有强大的开源社区,它的代码开源在Github,你可以方便的获取到Spring项目的源代码。spring-framework项目在Github拥有超过50K的Star,贡献代码的工程师超过700人,足见Spring社区非常活跃。一个的开源社区的活跃程度决定了这个项目的发展前景和空间,Spring社区的广泛活跃注定了Spring在未来的巨大发展前景。

五、其他开源项目

springdoc

SpringDoc是一款可以结合SpringBoot使用的API文档生成工具,基于OpenAPI3,用于取代SpringFox。它支持Spring WebMVC和Spring WebFlux,目前正在蓬勃发展种。
spring-doc


总结

提示:这里对文章进行总结:

本文简单介绍了spring的历史和发展趋势,spring framework的体系结构,让读者对Spring的由来和组成由一个简单的了解。

相关内容

热门资讯

使命的例子 使命的例子参考答案: 南朝四百八十寺,多少楼台烟雨中。
求东汉霸王转和 红楼梦之绮梦仙... 求东汉霸王转和 红楼梦之绮梦仙缘 激情版 大神们 求求你们啦大神们求求你们啦 小弟在线等啊这种书...
姜子牙死后被封了什么?为何受到... 姜子牙死后被封了什么?为何受到人们永世厌恶?姜子牙死后被封了“五穷星”。因为人们都期盼富贵,所以受到...
使用移动网络的虚拟运营商有哪些... 使用移动网络的虚拟运营商有哪些?170号段是虚拟运营商专属号段,虚拟运营商是指与电信基础运营商(国内...
八重神子多少岁 八重神子多少岁八重神子已经有五百多岁了。八重神子,米哈游出品的游戏《原神》及其衍生作品中的角色,掌管...
小爸爸19用英语怎么说 小爸爸19用英语怎么说“小爸爸19”翻译为:  Little dad nineteen
尼尔斯骑鹅历险记小说全集多少字 尼尔斯骑鹅历险记小说全集多少字 作  者:(瑞典)拉格洛芙 著,石琴娥 译出 版 社:中央编译出版...
求一篇科学家故事的演讲稿 求一篇科学家故事的演讲稿科学家的故事有哪些
吾三省吾身 吾三省吾身吾三省吾身... 吾三省吾身 展开 曾子曰:“吾日三省吾身——为人谋而不忠乎?与朋...
关于爱情的治愈文案 关于爱情的治愈文案关于爱情的治愈文案01、当原则遇上心动就会不停的破例。02、喜欢是常套彼此爱是上无...
下宫乡的介绍 下宫乡的介绍下宫乡原名厦宫,位于福州市连江县境东北黄岐半岛北侧,与罗源县碧里乡隔海相望,为罗源湾出海...
读书屋的介绍 读书屋的介绍读书屋始创于2009年3月25日,并于2009年3月25日正式运作,初步定位以提供网站制...
蔡兴南是男主的那个《来不及说我... 蔡兴南是男主的那个《来不及说我爱你》好看吗?挺好看的,不过好像是be
职业技术学校那个好?就业怎么样 职业技术学校那个好?就业怎么样现在的职业学校比较多,专业种类也比较多,因此选择也多。首先要看自己今后...
大堰河的生平事迹? 大堰河的生平事迹?《大堰河——我的保姆》是现代诗人艾青于1933年1月14日写的一首诗。全诗分为四部...
我的爸爸干什么的造句 我的爸爸干什么的造句我的爸爸干什么的造句爸爸干什么这件事让我懂得了什么的道理造句例句:爸爸见义勇为的...
墨修和龙浮千什么关系 墨修和龙浮千什么关系是一个人。在《墨修龙灵》中,主角叫做墨修浮干,称号是龙。很多人称他为龙浮干。也正...
什么叫汽车的驱动力 什么叫汽车的驱动力什么叫汽车的驱动力刻服阻力摩擦牵引汽车运动的力
为什么有些人整天幻想自己和偶像... 为什么有些人整天幻想自己和偶像在一起?你说的是那些追星的女孩子吧,emmmm人总是活在希望当中,个人...
林俊杰有哪些经典的歌 林俊杰有哪些经典的歌在这里向你推荐林俊杰的3首歌:《江南》、《一千年以后》、《alwaysonlin...