Spring使得建设企业应用变得简单了,Spring提供了Java领域的一切,包括对Groovy和Kotlin这两种可选语言的支持,能够根据应用需求构建多种架构。Spring Framework 5.1之后需要JDK8+,目前已经支持JDK11 LTS,Java SE 8 update 60是支持的最低版本。
Spring支持多种应用场景,比如运行在JDK和服务器上,也可以是一个内嵌的Jar文件,甚至是在云环境。
Spring是开源的并且其社区非常活跃,社区中能接收到行业各异的真是用户的反馈,这使得Spring不断自我完善。

Spring意味着什么

在不同的情境下Spring有着不同的含义,它可以是指Spring Framework项目本身,而基于Spring Framework的其他Spring项目也都被称为Spring,Spring会代指整个项目家族。这里会主要学习Spring Framework项目。

Spring Framework包含多个模块,用户可以根据需求选用。核心模块是容器模块,它包含了配置模型和依赖注入机制。此外,Spring Framework还提供不同架构的基础支持,例如消息、事务、持久化、web等,还有基于Servlet的web框架Spring MVC、响应式框架WebFlux。

注:Spring的模块支持JDK9的模块化Jigsaw

Spring和Spring Framework的历史

Spring诞生于2003年,最初是因J2EE规范的复杂难用而创造,一些人认为Spring与JavaEE是替代关系,实际上Spring是对JavaEE的补充。Spring没有全面遵循JavaEE平台的规范,而是从中挑选了一些:

  • Servlet API (JSR 340)
  • WebSocket API (JSR 356)
  • Concurrency Utilities (JSR 236)
  • JSON Binding API (JSR 367)
  • Bean Validation (JSR 303)
  • JPA (JSR 338)
  • JMS (JSR 914)
  • JTA/JCA

Spring支持依赖注入(JSR 330)和注解(JSR 250)规范。

Spring Framework 5.0需要JavaEE 7+(Servlet 3.1+,JPA2.1+),一些新的API需要JavaEE8(Servlet 4.0,JSON绑定API),Spring可全面兼容Tomcat8、9,WebSphere9,JBoss EAP 7。

JavaEE在应用开发中的角色发生了变化,早期应用都是单体架构并发布在单节点服务器上,如今使用Springboot,应用可以开发运维一体化以及适合上云,Servlet容器也在变化,Spring Framework 5开始支持WebFlux应用,不在遵循Servlet API,可以运行在非Servlet容器智商,例如netty。

Spring在持续的发展,除了Spring Framework还有很多其他项目,例如Spring Boot、Spring Security、Spring Data,Spring Cloud,Spring Batch。

设计的哲学

当学习框架时,明白它的设计原则是很重要的,以下是Spring的设计原则:

  • 提供更多更方便的选择:Spring能够让具体选型时间延后,例如,可以使用简单配置就切换不同类型数据库,还包括其他的架构设计点以及第三方API的集成。
  • 接纳不同的观点:Spring拥抱灵活性,会接纳并支持各种需求
  • 向后兼容:在版本升级时Spring会仔细选择JDK版本、第三方库,以保证最大限度的向后兼容
  • 关注API设计:Spring团队始终如一的仔细考量API设计
  • 高质量代码:Spring框架非常强调有意义的、最新的和准确的javadoc。它是极少数能够声明干净的代码结构,并且包之间没有循环依赖关系的项目之一

Spring FrameWork是什么相关推荐

  1. 手动创建Spring项目 Spring framework

    之前学习框架一直是看的视频教程,并且在都配套有项目源码,跟着视频敲代码总是很简单,现在想深入了解,自己从官网下载文件手动搭建,就遇到了很多问题记载如下. 首先熟悉一下spring的官方网站:http: ...

  2. Spring Framework 6 将采用 Java 17,是时候将你的应用升级了

    关于从先前的长期支持版本(Java 11 和 Java 8)迁移代码,你需要知道的是什么? 整理 | 王晓曼 出品 | CSDN(ID:CSDNnews) Spring Framework 6 将采用 ...

  3. spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包

    下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...

  4. 在Spring Framework中@Inject和@Autowired有什么区别? 在什么条件下使用哪一个?

    本文翻译自:What is the difference between @Inject and @Autowired in Spring Framework? Which one to use un ...

  5. 《Java Web高级编程——涵盖WebSockets、Spring Framework、JPA H

    2019独角兽企业重金招聘Python工程师标准>>> <Java Web高级编程--涵盖WebSockets.Spring Framework.JPA Hibernate和S ...

  6. Spring Framework 5.3.6、5.2.14 发布

    一个月前,小编刚给大家介绍过Spring Framework 5.3.5 的发布(紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!) 这才过来不到一个月 ...

  7. 紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!

    昨天小编刚给大家介绍过最新的Spring Boot 2.4.4.Spring Cloud 2020.0.2 发布内容,还没看过的小伙伴点这里:Spring Boot 2.4.4.Spring Clou ...

  8. Spring Framework 5.2.5 发布,增加对 Java 14 的支持

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://www.oschina.net ...

  9. Spring Framework 5.2 正式发布,14项新特性一览

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | xplanet 来源 | http://oschina.net/news/1103 ...

  10. Spring Framework(框架)整体架构

    原文链接:https://blog.csdn.net/wd2014610/article/details/80061808 Spring 在这个Spring框架大行其道的软件开发世界里,尚有很多工程师 ...

最新文章

  1. 在Relay中注册新TVM算子
  2. 3D目标检测论文阅读摘要
  3. 光伏组件清洗的7大注意事项
  4. android:activity的生命周期及它们之间的传值
  5. danfoss 变频器的profinet通讯调试_840D sl系统PLC 开机调试
  6. hdu3549(网络流入门题-最大流的Ford-Fulkerson算法)
  7. linux boot分区有什么用,/ boot分区的真正作用是什么?
  8. IT行业 侃侃富士康
  9. $watch, $watchCollection, $watchGroup的使用
  10. 两台具有独立操作系统的计算机,第1章计算机网络习题与思考题参考答案
  11. 【React Native 安卓开发】----侧边栏的实现DrawerLayoutAndroid以及第三方框架react-native-side-menu的使用【第六篇】
  12. 爬取中国天气网获取全国城市编码并存入mysql数据库
  13. Linux配置阿里yum源
  14. java docx4j 合并word_使用docx4j进行docx文档合并。
  15. mhdd测试hdd硬盘软件,硬盘检测工具mhdd
  16. matlab怎么编写风雨荷载时程,风雨荷载作用下输电塔动力响应分析
  17. webapp(WebRoot)目录下的jsp访问不了webapp目录的css文件的问题解决
  18. 防止服务器被修改,教您如何防止IE被恶意修改
  19. MWC 2018前瞻:三星华为诺基亚们会展示这些黑科技!
  20. 区块链的底层技术:P2P网络原理与应用详解

热门文章

  1. python比较两个list之间的差异、相同(差集、交集、并集)
  2. 高精度除法(精确到小数点后N位)
  3. 10大领域5大过程47子过程快速记忆
  4. selenium java框架_自动化测试框架selenium+java+TestNG——配置篇
  5. 船东提单和货代提单差距这么大?
  6. ijkplayer eclipse 运行错误解决java.lanBinary XML file line #16: Error inflating class tv.danmaku.ijk.media
  7. 分享适合女生做的六个兼职项目,在家做副业,看看有没有你感兴趣的
  8. spring boot + maven使用profiles进行环境隔离
  9. 纯c语言编译器pelloc,大规模并行粒子模拟系统代码级优化研究和实现.pdf
  10. 代码整洁之道(上篇)