搞后端的都知道Spring是一个强大的工具,但是强大在什么地方?Spring是什么?为什么需要Spring?Spring能带来什么?让我们带着这些问题开始Spring之旅。
预备知识
在开始旅行之前,先看一下以后经常遇到的几个概念:
- 应用程序:能完成所有功能的成品,如:购物网站、OA系统
- 框架:能完成一些功能的半成品,是开发应用程序的基本框架,可以提供一些基本的功能,还规定了类和对象如何创建、如何协作,从而简化开发。
- 非浸入式设计:无需继承框架的类就是非浸入式设计,需要继承框架的类是浸入式设计。可以很明白看出如果企业换底层框架换的话,浸入式设计的代码都不可以继续使用了,但是非浸入式设计却不会受影响。
- 轻量级和重量级:轻量级一般是非浸入式的,依赖的东西很少,资源占用也很少,部署简单
- POJO:(Plain Old Java Object)简单的Java对象,可包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类或接口
- 容器:容器顾名思义就是存放东西的东西,在程序设计也就是装对象的对象,对象存在放入,取出操作,所以容器也需要管理对象的生命周期
- 控制反转:Inverse of Control,缩写IoC,还有广为人知的名字叫依赖注入(Dependency Injection,DI),就是容器控制程序之间的关系,而不是传统实现,由程序代码直接操作
- Bean:一般指容器管理对象,在Spring中指Spring IoC容器管理对象
Spring是什么
Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。解决的就是对象之间的依赖关系,要形成低耦合,高内聚。框架的大概理解可以是造房子搭框架,以后你想要什么个性化的操作就在这个框架上开发,框架设定了大体不能那个违反,这样有利于后期其他人员的维护与二次开发。
Spring框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,本身还提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成(如Hibernate、JPA、Mybatis),提供一套自己的web层框架Spring MVC、而且还能非常简单的与第三方web框架集成。
Spring是整个开发的核心,所有其他的框架都是与它组合,他才是老大,其他框架只有向他俯首称臣,Spring才会带他们一起玩耍。像现在主流的Struts+Spring+Herbert和SpringMVC+Spring+Mybatis都是Spring是核心。
为什么需要Spring
要想知道为什么需要Spring,知道Spring的好你不就爱上她了嘛!
- 非常轻量级的容器:以集中的,自动化的方式进行对象的创建于装配,管理对象的生命周期,能组合成复杂的应用程序。Spring容器是非侵入式的(不需要继承任何Spring的特定类),而且完全采用的是POJO开发,容易测试更容易管理。而且核心JAR包非常小,不需要依赖任何的应用服务器,可部署在任何环境下。
- AOP:Aspect Oriented Programming,面向切面编程。把可重用的功能提取出来,将这些功能在合适的时候植入程序中;比如安全,日志记录这些通用的功能提取出来,在程序执行的合适的地方植入并执行他们,从而完成需要的功能。面向切面提供了另一个角度来考虑程序结构以完善面向对象编程,即可在程序编译、装在、运行期间通过不修改源代码给程序动态加入功能的技术。
- 简单的数据库事务管理:管理数据库一直是一个令人头疼的事,Spring支持可插入式的事务管理,通过Spring事务管理可把我们从事务管理中解放出来专注业务逻辑
- JDBC抽象和ORM框架支持:Spring使JDBC更加容易使用,集成了第三方的ORM框架(Hibernate、Mybatis);完全支持Spring事务和使用Spring提供的异常体系
- Web层支持:Spring本身提供了强大的MVC框架(Spring MVC),而且可与第三方MVC框架集成(Struts);
- 简化各种技术集成:提供对Java Mail、任务调度、EJB、动态语言、远程访问、Web Service等的集成
明白Spring的这么多优点,我们也就知道为什么需要Spring。Spring可以看做是一个超级粘合平台,能把很多技术整合在一起,形成一个整体,是系统结构更优良,性能更出色,加速简化我们的程序开发。
Spring能带来什么
- 传统程序开发,创建对象及组装对象间的依赖关系是通过程序内部控制的,会增加对象间耦合,如果要修改对象间的依赖关系就要修改源代码,再编译,部署;采用Spring,由Spring的配置文件完成对象的创建和对象间的依赖关系,如需修改,只需修改配置文件,无需再编译;
- 项日志记录、权限控制、性能统计等这些操作,在传统程序开发中国很多是重复的,在Spring中可以利用面向切面编程,在有需要的地方动态加入这些功能,无需各个需要的方法和对象中,而且Spring是通过配置文件完成不需要再代码中添加额外的代码,现有代码专注业务逻辑。
- 在传统程序开发中,数据库事务管理有“获取连接,执行SQL,提交或回滚,关闭连接”,如使用Spring,只需获得连接,执行SQL,其他由Spring管理,Spring简化了数据库事务的管理
- Spring可与第三方数据访问框架集成(Hibernate,JPA),自己也提供了一套JDBC访问方式
- Spring可与第三方Web框架集成(Struts、JSF),自己也提供了一套Spring MVC框架
- Spring可与Java EE整合(Java Mail 任务调度等)与更多的技术整合(比如缓存框架)
如何学好Spring
通过前面的认识,已经知道了Spring是个什么玩意了,能为我们服务什么,再通过做一个小demo,就大概知道怎么使用Spring了。Spring的核心是IoC,所以要学好Spring,一定把IoC容器给它整明白了(同样带这是什么,为什么,怎么用的疑问来学习);理解好了IoC,另一个重头就是AOP,也就是面向切面编程了,也要给它整明白了(同样是带这是什么,为什么,怎么用的疑问来学习)。将这两大哥给理解透彻了以后,剩余小弟(知识)都是围着大哥转的,学习起来就会轻松了。学习Spring得慢工出细活,把基础给打牢了。
网友评论