首页 > 技术文章 > Java架构师之路 Spring学习笔记(一) Spring介绍

zuxingyu 2016-11-01 21:26 原文

前言

  这是一篇原创的Spring学习笔记。主要记录我学习Spring4.0的过程。本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审视下目前自己所掌握的Java基础可能后续会有很多笔记去记录我温习Java的过程。但这个是我Java的开端,希望我自己能够坚持下去,一天一篇,每天记录我的成长。成为Java架构师是我的梦想,我知道这个可能性比较低。不管怎么样我都希望我走这条路不会后悔。

 为什么学习Spring?  

  学习过Java的人都知道Spring的重要性,我这里就不一一赘述了。个人觉得Spring就是百搭,什么框架都可以用到Spring。举个例子SSH1、2框架,都有Spring掺和,更别说SpringMVC了,最近看新闻貌似SpringBoot也逐渐流行起来了。不管怎么说Spring是通向Java架构师必学的技术(路很长),所以,必须学了!!!

 哪些人可以看这些笔记

  有一定JavaEE基础的,对Java具有浓厚兴趣的可以看这些笔记。本笔记不适合新手,我把这笔记作为自己开发时候的参考书来学习。

 参考网站

Spring的框架历史

  Spring框架最开始的部分是由Rod Johnson于2000年为伦敦的金融界提供独立咨询业务时写出来的。在《Java企业应用设计与开发的专家一对一》一书中,Rod进一步拓展了他的代码,以阐述“如何让应用程序能以超出当时大众所惯于接受的易用性和稳定性与J2EE平台上的不同组件合作”的观点。 

  在2001年,web应用的主流编程模式为Java Servlet API和EJB。两者都是由太阳微系统公司与其他一些开发商和利益团体提出的,并在Java业界里获得了广泛的共识。那些非Web的应用,比如用户端的或批处理的应用,也可以基于能够提供所需功能的开源或商用工具和项目。 

  基于最优方法并适用于各种应用类型的Spring框架的建立要归功于Rod Johnson。这些想法也在他的书中得以阐述。书发表后,基于读者的要求,源代码在开源使用协议下得以提供。 

  一批自愿拓展Spring框架的程序开发员组成了团队,2003年2月在Sourceforge上构建了一个项目。在Spring框架上工作了一年之后,这个团队在2004年3月发布了第一个版本(1.0)。这个版本之后,Spring框架在Java社区里变得异常流行,部分的要归结于它好于一般水准的文档功能和参考文献,特别是对于一个开源项目而言尤其如此。 

  但是,Spring框架在2004年也备受批评,有时它也成为热烈争论的主题。Spring的第一个版本发布时,许多程序员和领先的设计人员把它看作是远离传统编程模式的一步;特别是对于EJB而言尤其如此。Spring框架的一个重要设计目标就是更容易地与已有的J2EE标准和商用工具整合。在很大程度上,这个目标使得通过受争议的官方委员会控制的规范文档来定义功能变得可有可无。 

  Spring框架使之前并不受欢迎的技术在短时间内迅速走红,最有名的例子就是反向控制(IOC)。2004年,Spring框架的采用率非常之高;通过推出自身的AOP(面向方向的编程),Spring使AOP整体而言在Java社区里广受欢迎。 

  2005年,Spring因具有里程碑意义的新的版本的推出,更多功能的添加,从而得到了比2004年更高的采用率。2004年底创建的Spring论坛也对框架的推广而推波助澜。论坛对广大用户而言已经成为最重要的信息和帮助的源泉。 

  2005年,Spring框架的开发人员成立了自己的公司,来提供对Spring的商业支持,其中最显著的就是与BEA的合作。2005年12月,第一个Spring会议在迈阿密举行,3天的课程吸引了300名开发人员。2006年6月在安特卫普召开的会议有400多名开发人员。 

Spring框架的主要功能

  • 基于Java Beans的配置管理,采用IOC的原理,特别是对依赖注射技术的使用。这些都用来减少各组件间对实施细则的相互依赖性。
  • 一个核心的,全局适用的bean工厂
  • 一个一般抽象化的层面来管理数据库间的数据处理
  • 建立在框架内的,对Java数据处理API和单独的JDBC数据源的一般性策略。因此,在数据处理支持上对Java企业版本环境的依赖性得以消除
  • 和一些可持续性的框架,如Hibernate,JDO,iBATIS(现在叫MyBatis)和db4o,的整合 
  • web应用中的MVC框架,基于核心的Spring功能,支持多种产生视图的技术,包括JSP,FreeMarker,Velocity,Tiles,iText,和POI 
  • 大量的AOP框架以提供诸如数据处理管理的服务。同IOC的功能一样,目的是提高系统的模块化程度

Spring所需学习的技能(未完待续)

  1. 依赖注入(DI)
  2. 控制反转(IoC)
  3. and so on

推荐阅读