Spring让企业级应用的开发更加简单,它使得JAVA能够在企业环境中得到应用。当前版本将在JVM中支持Groovy, Kotlin,同时也将能够灵活地生成多种针对不同应用需求的架构。在Spring 5.1中,JDK1.8以上的版本是必须的,同时也针对JDK11 LTS提供额外的支持。JDK1.8中,最推荐的版本是JAVA SE 8U60, 但一般来说使用新近的版本会更好。
Spring广泛支持各种应用场景。在大企业中,应用通常需要长时间不停机,因此JDK跟应用服务器的升级周期不在开发人员的控制。另外应用也可能是以单一的jar包运行在云环境中,其中启用了嵌入式的服务器。还有一些是单机应用(比如批量batch 或者集成工作负载)甚至不需要服务器。
Spring是开源的。它拥有庞大且活跃的社区,能基于现实应用案例提供源源不断的回馈,这使得Spring在很长的时间里能够成功地不停演变。
1.我们想通过Spring传递什么
Spring这个术语,在不同语境下有不同的理解,它可以指Spring框架本身,随着时间流动,其他类型的Spring项目在该框架基础上慢慢建立起来。一般来说,当然人们提到Spring, 他们说的是整个Spring家族。而在这里,Spring指的是框架本身。
Spring框架是由不同模块构成的。应用可以选择它们需要的模块。而核心的模块是the core container,即核心容器,包括了配置模型与依赖注入机制。除此之外,Spring提供了对多种基础应用架构的支持,包括应用通信,事务数据与持久性,网站应用。同时还包含了继续servlet的Spring MVC网站框架与Spring WebFlux reactive网站框架。
另外关于模块有一点需要提醒的是,Spring框架jar包能够被发布到JDK9的模块路径【jigsaw】。对于启用jiasaw的应用来说,Spring5系列的jar包能够通过自动模块命名入口【入口用于定义稳定的语言级别模块命名,与jar中的artifact名字无关】。当然Spring框架的jar包在JDK1.8或者1.9以上的类路径下也能很好地工作。
2.Spring框架的历史
Spring产生于2003年,作为针对复杂的J2EE的一个回应。然而也有观点认为,JAVA EE与Spring是一个整体,Spring其实是小心地整合了EE中特定的规范,包括:
Servlet API
WebSocket API
Concurrency Utility并发功能
JSON绑定API
Bean检验
JPA
JMS
为事务引导服务的JTA/JCA
Spring框架也支持依赖注入,公用注解规范,开发者能在框架里选择性使用各种Spring指定提供的规范机制。
因为Spring5要求至少跟上了JAVA EE7的水平,同时也额外整合了EE8,这使得Spring兼容了像Tomcat8, 9,Websphere9,以及JBoss EAP7。
随着时间推进,JAVA EE在应用开发中的角色也在变化。一开始应用只需要在一个服务器上部署。今天,随着Spring boot的使用,应用部署基于devops运营模式与云环境,内置了Servlet容器。在Spring5中,WebFlux应用甚至不需要直接使用Servlet API,就能运行在没有Servlet容器的服务器上【比如Netty】.
Spring将继续创造与发展。除了Spring框架,很多其他相关项目值得关注,例如Spring boot, Spring Security, Spring cloud, Spring batch和release cadence.
3.设计理念
当我们在学习一个框架的时候, 我们要了解的不仅仅是它做了什么, 且要理解它所遵循的原则. 以下是Spring框架所遵循的原则:
- 提供不同层次上的选择. Spring会尽可能让你延迟设计决定, 例如你可以通过配置的方式切换持久层, 无更改代码. 同样道理对于很多其他基础组件及其与三方接口的集成
- 接纳多样性. Spring是灵活的, 它不会固执地认定事物应该是怎么样去做, 而是去广泛支持不同层次的应用需要.
- 维持最大的向后兼容性. Springe在演变的过程中, 不同版本被极其严格管理以防止版本冲突问题. 具体来说, Spring通过严格指定的JDK版本与三方库从而保证了基于Spring的应用与工具库的维护的便利性.
- 注重接口设计. Spring团队花费了很多的心力与时间去设计接口, 使得接口尽量便利以及在版本之间避免冲突.
- 设置高标准的代码质量. Spring强调有意义的, 实时的与准确的javadoc. 如果没有工具包依赖循环论证, 几乎没有项目能够产生清晰的代码体系.
4.回馈与贡献
如果有关于如何实现相关的问题, 以及如何诊断与发现问题, 我们建议使用Stack Overflow. 如果你很肯定Spring中存在某些问题, 或者希望增加某些特性, 可以在GitHub进行反馈.
如果你有一些解决方案, 你可以在GitHub提交你的代码. 不过你需要了解的是, 对于所有琐碎的问题, 我们希望在问题记录中有完整的文件记录.
5.准备开始
如果你刚刚开始使用Spring, 你可以通过新建Spring boot了解Spring框架. 其实Spring boot是提供一个快速(死板的)方式去生成Spring应用, 它基于Spring框架, 采用常用的配置, 使得你能尽快启动一个应用.