春天的核心技术与产品理念剖析【上】

它技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身。我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,乘风破浪,做这个巨变时代的弄潮儿!

2003年,Rod Johnson创建了春天,我在那一年开始了研究生实习.2005年参加工作,通信行业,主力开发语言是C/c++。在校勤工俭学时捣鼓过JSP、2005年前后我开始自学弹簧搭建个人网站,那时Java领域最火的开发框架组合就是:Struts + Spring + Hibernate, SSH.2009年,我跳槽到了移动互联网行业,主力开发语言逐渐转为Java.2014年,我再次跳槽进了互联网金融行业,基于春扩展定制内部开发框架,从春天用户变成了扩展开发者.2016年因参与内部云平台建设,我跟春天的东家关键公司还有过一次合作。随着微服务等技术的兴起,近些年我做了许多弹簧引导\春云扩展定制和培训推广。

一晃眼十五年过去了,从取代EJB的轻量级开发框架开始,到无比强大的生态圈,再到春天引导\春云重新塑身成为云原生应用开发领域的首选框架.Spring早已不是最初的模样了,在它身上发生过无数变化,但唯一不变的是它仍旧稳坐Java开发框架领域的头把交椅。或许大部分读者都熟悉春天的使用,但你知道它背后的核心技术有哪些吗?这些年它都发生过哪些重大的变化?它演进至春季启动/春云的原因是什么?它的成功源于哪些关键的产品设计理念?……熟悉春天的使用仅仅是“知其然”,唯有“知其所以然”,我们才能真正融会贯通用好它。快来吧,千万不要错过!老兵用血汗经验为你剖析那些风云变幻中的不变量:

<李>

<李>

<李>

<李>

<李>

<李>

适读人群:开发,测试,架构,产品等

<李>

<强> 1。Spring

Java EE 或 J2EE,都是 Java Platform Enterprise Edition 的简称,它是一套开发分布式企业级应用的规范和标准,由一整套服务(Services)、应用程序接口(APIs)和协议构成,下面是 J2EE 涵盖的13种技术规范:

  • JDBC:Java Database Connectivity 

  • JNDI:Java Naming and Directory Interface

  • EJB:Enterprise Java Bean

  • RMI:Remote Method Invocation

  • Java IDL for CORBA

  • JSP:Java Server Pages

  • Java Servlet

  • XML:Extensible Markup Language

  • JMS:Java Message Service

  • JTA:Java Transaction API

  • JTS:Java Transaction Service

  • Java Mail

  • JAF:JavaBeans Activation Framework

生产力决定生产关系,而科学技术是第一生产力。Java 最早是由 Sun Microsystems 公司发明的高级编程语言,EJB 也是由 Sun Microsystems 公司推行的 J2EE 标准规范,而 Spring 却取代 EJB 成了事实标准,以世俗的眼光看,这是一个经典的以弱胜强的故事。当时,EJB 的背后有许多知名的商业公司提供强力支持,而 Spring 仅仅是 Rod Johnson 个人的玩票作品,为什么最终结局出乎意料呢?其实,弱是无法胜强的,只是当时世人看不懂 Spring 比 EJB 强在什么地方,现在我们再去剖析就知道它强在技术上,先进的技术造就了 Spring 的轻量和易用,再加上开源免费的商业模式,最终赢得用户。

那究竟哪些核心技术造就了 Spring 的辉煌呢?除了最著名的控制反转 IOC、依赖注入 DI 和面向切面编程 AOP 等外,还有 MVC、Taglib、ORM、Annotation 等,以及对 J2EE 其他标准规范的支持,包括:JDBC、JNDI、RMI、JMS 等,接下来我们简单介绍一下这些关键技术,如果想更加深入的了解,大家可以找资料做专题学习。

  • 1.1 IOC/DI/AOP

Spring 作为开源框架,为了降低企业应用的开发复杂度的人创建,但现在它已经不限于企业应用这个领域了,而是一个轻量级的控制反转 IoC(Inversion of Control)和面向切面 AOP(Aspect Oriented Programming)的容器框架。通过 IoC 技术让应用达到松耦合的目的,通过面向切面编程分离业务逻辑与系统服务。IoC 容器负责管理所有应用对象的配置和生命周期,将简单的组件配置、组合成为复杂的应用。

控制反转 IoC 的另外一个说法就是依赖注入 DI(Dependency Injection),它规范了对象与被依赖对象之间的装配过程,对象通过构造器参数、工厂方法参数、属性设置函数来声明依赖关系。IoC 容器提供装配和管理 Bean 功能,整个装配过程由 IoC 容器调度控制的,它在创建对象实例过程中将其所依赖的实例注入,这跟 Bean 直接通过构造器或者 Service Locator 模式自己控制初始化或定位所依赖实例的过程是相反的。

春天的核心技术与产品理念剖析【上】