SSH框架学习(Struts+Spring+Hibernate)之Spring框架

说明:文章所有内容均摘自《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》黑马程序员的书

1.1 Spring概述
1.1.1 什么是Spring

Spring是开源的轻量级框架,它以IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的JavaBean来完成以前只可能由EJB(Enterprise Java Beans,Java企业Bean)完成的工作,取代了EJB的臃肿、低效的开发模式。

Spring致力于Java EE 应用各层的解决方案,在表现层它提供了Spring MVC以及Struts框架的整合功能;在业务逻辑层可以管理事务、记录日志等;在持久层可以整合MyBatis、Hibernate、JdbcTemplate等技术。因此,可以说Spring是企业应用开发很好的“一站式”选择。虽然Spring贯穿于表现层、业务逻辑层和持久层,但它并不想取代那些已有的框架,而是以高度的开放性与它们进行无缝整合。

:关于IOC控制反转和AOP面向切面编程的解释

IOC控制反转:比如创建一个类A,类中添加了一个非静态方法method() ,在另外一个类B中调用此类A的方法,都是通过new一个A对象,再通过此A对象来调用method()。 IOC把对象的创建不是通过new方式实现,而是交给spring配置创建类对象

AOP面向切面编程:扩展功能不是修改源代码实现

1.1.2 Spring框架的优点

Spring具有简单可测试松耦合等特点,从这个角度出发,Spring不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。关于Spring框架优点的总结,具体如下。

  1. 非侵入式设计
    Spring是一种非侵入式框架,它可以使应用程序代码对框架的依赖最小化

:关于侵入式框架非侵入式框架的解释

如果在使用该框架时,要继承框架提供的实体类或实现框架提供的接口,这就说明该框架是侵入式框架,因为程序本身对框架有了依赖,当去除框架时,程序也就无法运行,这个也就是我们说的重量级框架,如struts1中,action和actionForm必须要继承Action和ActionForm一样。

相反的非侵入式框架是轻量级框架的重要特点,如hibernate和spring,当我们想去掉hibernate和spring框架时,只需修改相应的程序,程序仍可运行。

  1. 方便解耦、简化开发
    Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大地降低了组件之间的耦合性。

  2. 支持AOP
    Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,大大地提高了程序的复用性。

:AOP全称Aspect Oriented Programming,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

  1. 支持声明式事务处理
    只需要通过配置就可以完成对事务的管理,而无须手动编程。

  2. 方便程序的测试
    Spring提供了对Junit4的支持,可以通过注解方便地测试Spring程序。

  3. 方便集成各种优秀的框架
    Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如Struts、Hibernate、Mybatis等)的直接支持。

  4. 降低Java EE API 的使用难度
    Spring对Java开发中非常难用的一些API(如JDBC,JavaMail等),都提供了封装,使这些API应用难度大大降低。

:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

1.1.3 Spring的下载及目录结构

以版本4.3.6为例,Spring开发所需的JAR包分为两个部分,具体如下:

1. Spring框架包

Spring 4.3.6 版本的框架压缩包,名称为spring-framework-4.3.6.RELEASE-dist.zip,此压缩包可以通过地址“http://repo.spring.io/simple/libs-release-local/org/springframework/spring/4.3.6.RELEASE/”下载。下载完成后,将压缩包解压到自定义的文件夹中,解压后的文件目录结构如图所示。
在这里插入图片描述
docs文件夹中包含Spring的API文档和开发规范;
== libs==文件夹中包含开发需要的JAR包和源码;
schema文件夹中包含开发所需要的schema文件,这些文件中定义了Spring相关配置文件的约束。
打开libs目录可以看到60个JAR文件,如图所示。
在这里插入图片描述libs 目录中的JAR包分为三类,其中以RELEASE.jar结尾的是Spring框架class 文件的JAR包; 以RELEASE-javadoc.jar 结尾的是Spring框架API文档的压缩包;RELEASE-sources.jar 结尾的是Spring框架源文件的压缩包。整个Spring框架由20个模块组成,该目录下Spring为每个模块都提供了这三类压缩包。

在libs目录中,有四个Spring的基础包,它们分别对应Spring核心容器的四个模块,具体介绍如下。

spring-core-4.3.6.RELEASE.jar:包含Spring框架基本的核心工具类,Spring其他组件都要用到这个包里的类,是其他组件的基本核心。

spring-beans-4.3.6.RELEASE.jar:所有应用都要用到的JAR包,它包含访问配置文件、创建和管理Bean以及进行Inversion of Control(IoC)或者Dependency Injection(DI)操作相关的所有类。

spring-context-4.3.6.RELEASE.jar:Spring提供了在基础IOC功能上的扩展服务,还提供了了许多企业级服务的支持,如邮件服务、任务服务、EJB集成、远程访问、缓存以及各种视图层框架的封装等。

spring-expression-4.3.6.RELEASE.jar:定义了Spring的表达式语言。

2.第三方依赖包

在使用Spring开发时,除了要使用自带的JAR包外,Spring的核心容器还需要依赖commons.logging的JAR包。该JAR包可以通过网址“http://commons.apache.org/proper/commons-logging/download_logging.cgi”下载。下载完成后,会得到一个名为commons-logging-1.2-bin.zip的压缩包。将压缩包解压到自定义目录后,即可找到commons-logging-1.2.jar。
在这里插入图片描述
初学者学习Spring框架时,只需将Spring的4个基础包及commons-loggingcommons-logging-1.2.jar复制到项目的lib目录,并发布到类路径中即可。

1.2 Spring的核心容器

Spring框架的主要功能是通过其核心容器来实现的,因此在正式学习Spring框架的使用之前,有必要先对其核心容器有一定的了解。Spring框架提供了两种核心容器,分别为BeanFactory和ApplicationContext。因为ApplicationContext用的多,所以只介绍ApplicationContext。

1.2.2 ApplicationContext

ApplicationContext是BeanFactory的子接口,也被称为应用上下文,是另一种常用的Spring核心容器。它由org.springframework.context.ApplicationContext接口定义,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。

创建ApplicationContext接口实例,通常采用两种方法,下面只介绍 通过ClassPathXmlApplicationContext创建,具体如下。

  1. 通过ClassPathXmlApplicationContext创建

ClassPathXmlApplicationContext会从类路径classPath中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作,其使用语法如下。

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);

上述代码中,configLocation参数用于指定Spring配置文件的名称和位置。如果其值为"applicationContext.xml",则Spring会去类路径中查找名称为applicationContext.xml的配置文件。

1.3 Spring的入门程序

为了帮助理解,下面通过一个简单的入门程序来演示Spring框架的使用。
(1)在eclipse中新建一个名为Chapter01的web项目,将Spring的4个基础包以及loggingcommons-logging-1.2.jar复制到lib目录下。
在这里插入图片描述
(2)在src目录下新建一个包,并在包中创建接口UserDao,然后在接口中定义一个say()方法,如图
在这里插入图片描述
(3)在com.spring包下,创建UserDao接口的实现类UserDaoImpl,该类需要实现接口中的say()方法,并在方法中编写一条输出语句
:新建类的时候就设置上Interface
在这里插入图片描述
在这里插入图片描述
(4)在src目录下,创建Spring的配置文件applicationContext.xml,并在配置文件中创建一个id为userDao的Bean,
在这里插入图片描述
:第2~5行代码是Spring的约束配置。该配置信息不需要手动编写,可以在Spring的帮助文档中找到。第7行代码表示在Spring容器中创建一个id为userDao的Bean实例,其中class属性用于指定需要实例化Bean的类。

注意
spring配置文件的名称可以自定义,通常在实际开发中,都会将配置文件命名为applicationContext.xml

快速获取配置文件中的约束信息
打开Spring解压文件中的docs目录,在spring-framework-reference文件夹下打开html文件夹,并找到index.html文件,
在这里插入图片描述
使用浏览器打开index.html后,在浏览器页面的Overview of Spring Framework下的7.2.1小节Configuration metadata中,即可找到配置文件的约束信息。
在这里插入图片描述
在这里插入图片描述
此外,由于使用的是Spring4.3版本,所以还需要在复制后的xsd信息中加入版本号信息,其代码如下所示。
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd

(5)在com.spring下新建测试类TestIoC.java,并在类中编写main()方法,在main()方法中初始化Spring容器,并加载配置文件,然后通过Spring容器获取UserDao实例(即Java对象),最后调用实例中的say()方法。

执行程序(在TestIoC.java中右击->Run As ->选Java Application),在控制台的输出结果如图所示。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值