1.什麽是Spring?
Spring是一种从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大的提高了企业应用的开发效率。Spring是一个独立的框架,并不需要依赖任何Web服务器或容器,可以独立的在项目中使用。Spring贯穿表现层,业务层,持久层,是企业应用开发的“一站式”选择。
2.Spring的优点
- 低侵入式设计,对代码的污染极低。什么是侵入式,比如Struts,需要使用这个框架就需要在代码中继承它的ActionSupport类等等,将来需要抛弃这个框架的时候代码都需要重新进行修改,这就是侵入式。而Spring的低侵入式设计,使得代码在使用新框架或者新技术的时候,不需要对代码进行任何修改,也不会改变原来的代码结构。
- 使用IOC容器(Inversion of Control ),中文翻译是控制反转。什么是控制反转,我在网上找了一个很好的例子:
我每次吃饭的时候都要买一双一次性筷子(每一次使用都要new一次),在这样的关系下,是“我”(即调用者)每次都要“主动”去买一次性筷子(另一个类),我对筷子说你老老实实的过来我的手上,是我控制了筷子,那好,在这种控制正转的关系下,放在现实生活当中,肯定是不现实的,而且人是懒惰的,他总会去创造出更加方便自己生活的想法,更确切的做法是,买一双普通的筷子(非一次性),把他放在一个容器当中(在Spring中叫做IOC容器),你需要使用的时候就对容器说:IOC我想要用筷子(向容器发出请求),接着筷子就会“注入”到你的手上,而在这个过程当中,你不再是控制方,反而演变成一名请求者(虽然本身还是调用者),依赖于容器给予你资源,控制权坐落到了容器身上,于是这就是人们俗称的控制反转
控制反转也可以称为依赖注入,就是比如原本需要我们自己手动new对象,而使用控制反转之后,控制权转移给了容器,自然我们就不再需要自己new对象了,而是先把对象注入到容器里面,下次我们要用的时候直接拿来用就好了。
IOC容器其实就是一个超级大工厂,所有的对象(包括数据源,Hibernate SessionFactory等基础性资源)都会被当成IOC容器管理的对象——Spring把容器中的一切对象都统称为bean(这个bean和Java bean是完全不同的),这些bean全都放在xml文件中进行管理。其实一个bean就相当于一个对象,不一定是Java bean对象,而是所有对象。使用IOC的好处就是,我们不用再手动的new对象,不用关心对象的初始化、使用、销毁过程,这些都由IOC容器来管理,更好地实现了程序的解耦。
- AOP(Aspect Oriented Programming)即面向切面编程,Spring中的AOP,就是将原来的一些与核心功能完全无关的,比如异常处理,log日志处理,安全处理,事务处理等等这些散布在程序各处且大量重复的代码,集中起来封装到一个可重用模块,这个可重用模块就是“切面”,这样做的好处就是只需要写一个通用的模块,哪里需要它就指定Spring将这个模块加载到需要的地方,而不是在每个方法中都写一段差不多的代码,这样大大的减少了系统的重复代码,提高了代码的复用性。AOP应用的简单实例讲解:链接描述
- 独立性,Spring是一个独立的框架,可以与其他框架高度无缝整合。
- 高度开放性,Spring不强制应用完全依赖于Spring,开发者可以自由选择Spring框架的部分或者全部。
- 事务支持,Spring并不直接管理事务,而是提供了多种事务管理器,Spring事务管理器的接口是org.springframework.transaction.PlatformTransactionManager,通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了。
3.Spring框架如何搭建
1)点击链接:链接描述 ,此链接下面存放的是Spring各版本的压缩包的下载链接,点击一个你需要的版本进去下载RELEASE-dist.zip 文件,解压缩得到一个RELEASE文件夹。
2)找到RELEASE文件夹下面的libs目录,将所需的jar包复制到你自己的项目的WebRootWEB-INFlib目录下面,搭建一个Spring环境最少需要以下几个jar包,我以Spring 4.1.6为例:
- spring-core-4.1.6.RELEASE.jar (Spring核心jar包)
- spring-beans-4.1.6.RELEASE.jar (管理bean对象的核心jar包)
- spring-context-4.1.6.RELEASE.jar (上下文支持jar包)
- spring-context-support-4.1.6.RELEASE.jar (上下文支持jar包)
- spring-aop-4.1.6.RELEASE.jar (AOP支持jar包)
- spring-aspects-4.1.6.RELEASE.jar (面向切面编程用的jar包)
- spring-expression-4.1.6.RELEASE.jar (SpringEL表达式相关jar包)
- spring-jdbc-4.1.6.RELEASE.jar (数据访问层框架需要的支持jar包.用于处理JDBC链接)
- spring-orm-4.1.6.RELEASE.jar (ORM映射框架支持)
- spring-tx-4.1.6.RELEASE.jar (事务管理)
- spring-web-4.1.6.RELEASE.jar (网络支持所需的jar包)
- spring-instrument-4.1.6.RELEASE.jar (插件开发的jar包)
- spring-instrument-tomcat-4.1.6.RELEASE.jar(插件开发的jar包)
3)除了以上jar包之外,Spring的核心容器还依赖common-logging的jar包,因此还需要的到链接描述
下载commons-logging-1.2-bin.zip,将解压缩得到的commons-logging-1.2.jar也添加到你项目的lib目录下面。
经过上面三个步骤,我们就可以在项目中使用Spring框架了。
4.总结
Spring是一个很实用的框架,它简化了程序员的开发步骤,提高了开发效率,也很好做到了的代码解耦,并强化了程序员面向接口编程的习惯。
最后需要说明一点的就是Spring 4.0对IOC容器增强了一些注解,现在使用Spring框架几乎不需要自己配置bean实例,只需要在xml文件中配置下面两行代码,然后在类中配置相应的@注解,Spring就会自动搜索“com.students.xl”路径下的Java类,并将这些Java类注册成bean实例。Spring注解使用:链接描述
<context:annotation-config/>
<context:component-scan base-package="com.students.xl" />