初识 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的由来和组成由一个简单的了解。

相关内容

热门资讯

小仓鼠在笼子里一动不动的是怎么... 小仓鼠在笼子里一动不动的是怎么回事?小仓鼠应该是生病了,建议尽快处理,找兽医看看,他们最专业。目前应...
扬州何园的寻访感受 扬州何园的寻访感受 你好,请参考: 初见何园,似乎有种似曾相识的感觉,或许意识到这种想...
童年傻事作文---速来 童年傻事作文---速来童年傻事 童年是多么美好,童年的生活令人向往,童年的天空总是那么蓝,而童...
家庭幽默大赛老韩头一家幽默服装... 家庭幽默大赛老韩头一家幽默服装秀家庭幽默大赛老韩头一家幽默服装秀这都被他看出来了  今天晒内裤了,室...
乐器名称 乐器名称我在小提琴协奏曲《梁祝》的视频里这种乐器不知叫什么名字,请懂音乐和乐器的朋友给予解答,谢谢。...
电视剧《老马家的幸福往事》中的... 电视剧《老马家的幸福往事》中的马鸣和徐丽娜在马鸣的大学里的图书馆里偷书时用留声机听的歌是什么名字的请...
流鬼的介绍 流鬼的介绍 流鬼,是古代民族,分布在今俄罗斯勘察加半岛,有数万人。
请问为爱所困火吗 请问为爱所困火吗一般般。爱情偶像剧。此剧上一年开播,还上了微博热搜榜我认为很火,为爱所困第二部还有不...
什么是手诊 什么是手诊手诊的概念就是指通过人体手的纹路形态、变化、规律等方式,对人体器官的演变作出推理的一种防治...
双子星公主法和希的有几集,第一... 双子星公主法和希的有几集,第一部第二部都要,如果知道第三部也透露一点,请求不要编,法和希最后怎样了拜...
王熙凤简介 王熙凤简介《红楼梦》中人物,贾琏之妻,王夫人的内侄女。长着一双丹凤三角眼,两弯柳叶吊梢眉,身量苗条,...
大学生应从哪些方面进行自我探索 大学生应从哪些方面进行自我探索兴趣、能力、价值观、性格,这四个是最主要的方面,其中价值观是核心
谁有好看的卡通人物的电脑背景! 谁有好看的卡通人物的电脑背景!卡通人物的背景要清色! 看得清 要男生的 我有Clannad主题...
幼儿园小班孩子座位固定好还是经... 幼儿园小班孩子座位固定好还是经常换好?我家孩子座位老换,我觉得不好,大家觉得呢?... 我家孩子座...
我的爸爸的作文 我的爸爸的作文我的父亲 人们常说父爱如山,可在我看来,我的父亲对我的爱,并非完全如山那样严峻,有时却...
潘朵拉之心第二季动漫什么时候出 潘朵拉之心第二季动漫什么时候出动画只出了第一季 没有要出第二季的消息 可能性估计很小目前漫画还在连载...
时不我待是什么意思 时不我待是什么意思时不我待的意思是时间不等待人,要抓紧时间,不要虚度光阴。出处:日月逝矣,岁不我与。...
葫芦小金刚里大娃怎么被抓的 葫芦小金刚里大娃怎么被抓的掉泥潭被捉的
有一部小说叫穿越千年来爱你还是... 有一部小说叫穿越千年来爱你还是什么的有一部小说叫穿越千年来爱你还是什么的内容讲的是一个女的在路上走着...
火影忍者力 米娜是红眼吗 火影忍者力 米娜是红眼吗红眼?首先这几集是原创,非岸本创作。在岸本的剧情结构里面只有木叶白眼、写轮眼...