用了这么久的spring框架却一直不知其所以然,直接在网上看别人的攻略又感觉差了点什么,因此决定系统的看一下spring官方的英文文档。本系列博客将按照每一篇文章对应官方文档中的一个小节的形式发布,文章内容分为正文和单词两部分。
笔者的英文水平一般,正文中的引用翻译也只是部分翻译,故本文只是spring文档阅读过程中的记录和分享,不可作为译文参考。
官方文档地址:https://spring.io/projects/spring-framework
欢迎转载,转载时注明原作者即可。
正文
概览
spring是一个java后端框架,我最早接触它是使用SSM,如今已经全面投入springboot的怀抱,远离配置的喧嚣╮(╯▽╰)╭
The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments.
spring框架为现代企业级Java应用提供了全面的编程和配置模型。spring在整个应用中是作为基础建设部分存在的,它让工程师团队可以把精力用于直接在spring搭设好的脚手架(plumbing意为"管道",大家意会即可)上完善应用逻辑而不是把时间浪费在搭建特定的开发环境上。
spring不仅支持Java,同时还支持Groovy和Kotlin。我们可以把spring想象为一个高达,挂激光就是远程型,挂光剑就是近战型,挂锄头就是农用型。。
spring的理念是开箱即用(out-of-the-box,虽然我觉得springboot才是真正做到开箱即用了),最新的版本是5,对jdk的要求为jdk8或jdk9。
spring的历史
2003年,由于早期J2EE过于复杂,所以spring应运而生。它集成了很多J2EE的规范(包括依赖注入和注解)。
As of Spring Framework 5.0, Spring requires the Java EE 7 level (e.g. Servlet 3.1+, JPA 2.1+) as a minimum - while at the same time providing out-of-the-box integration with newer APIs at the Java EE 8 level (e.g. Servlet 4.0, JSON Binding API) when encountered at runtime. This keeps Spring fully compatible with e.g. Tomcat 8 and 9, WebSphere 9, and JBoss EAP 7.
spring5同时兼容Tomcat8、Tomcat9、WebSphere 9、JBoss EAP 7。
目前作为spring亲儿子的springboot已经相当成熟(截止到本文完成时最新的稳定版本为2.1.3),各种问题也都有了成熟的解决方案,而且springboot对于cloud和devops有着天生的亲和性。在容器技术大热的如今,不难想象springboot的未来。
spring的设计哲学
When you learn about a framework, it’s important to know not only what it does but what principles it follows.
当我们学习一个框架时,仅仅知道它的用途是不够的,更重要的是它所遵循的理念。
以下是spring所遵循的设计理念:
- Provide choice at every level.
- Accommodate diverse perspectives.
- Maintain strong backward compatibility.
- Care about API design.
- Set high standards for code quality.
这里我就不用我贫乏的词汇献丑了(ㄒ—ㄒ),这些设计理念给我的感觉就像python之禅,只可意会。
单词
framework 框架
architectures 架构
out-of-the-box 开箱即用
spring-specific spring特有的(不确定)