Spring学习总结第一篇

一、Spring概述

Spring是当前主流的JavaWeb开发框架,它是为了解决企业应用开发的复杂性问题而产生的。对于一个Java开发者来说,掌握Spring框架的使用,已是其必备的技能之一。

二、Spring简介

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

  • 目的:解决企业应用开发的复杂性。
  • 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。
  • 范围:任何Java应用。
    它是一个容器框架,用来装javabean (java对象), 中间层框架 (万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一 起运用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
    在实际开发中,通常服务器端在采用三层体系架构,分别为表示层(Web)、业务逻辑层(Service)、持久层(Dao),Spring对每一 层都提供了技术支持。
  • 表示层:在表示层提供了与Struts等框架的整合。
  • 业务逻辑层:在业务逻辑层可以管理事务、记录日志等。
  • 持久层:在持久层可以整合Hibernate、 JdbcTemplate等技术。

三、Spring框架优点

  • 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑。
  • 可以提供众多服务,事务管理,WS等。
  • AOP的很好支持,方便面向切面编程。
  • 对主流的框架提供了很好的集成支持,如hibernate,Struts2,JPA等 。
  • SpringDI机制降低了业务对象替换的复杂性。
  • Spring属于低侵入,代码污染极低。
  • Spring的高度可开放性,并 不强制依赖于Spring,开发者可以自由选Spring部分或全部。

四、Spring框架的体系结构

Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块。
在这里插入图片描述

4.1 核心模块(CoreContainer)

Spring核心模块包含有Core、Beans、Context和Expression Language四个小模块。其中,Core和Beans是整个Spring框架基础部分,也是Spring的核心依赖注入oC与DI的最基本实现,Spring的其他模块大多依赖这两个功能。

  • spring-core:其他模块的基础核心,包含Spring框架的核心工具类,Spring其他模块都要使用该包里面的类。
  • spring-beans:Spring定 义bean的支持,负责访问配置文件、创建和管理bean,支持依赖注入和控制反转的相关操作。传说中的bean工厂类就在这个jar包中。
  • spring-context:spring运行时容器,在Core和Beans的基础上,提供对Spring的上下文支持,ApplicationContext是该包的关键,通过它,可以方便快捷的取出依赖注入的Bean。
  • spring-expression:spring表达式语言,帮助Spring在运行时查询和操作对象。支持设置 / 获取对象的属性值,方法的调用。

4.2 AOP模块

  • spring-aop:对于代理AOP的支持。
  • spring- Aspects:对于Aspect的AOP支持。

4.3 Web模块

  • spring-web:提供基础的web功能,在Web项目中提供Spring的容器。
  • spring-webmvc:提供基于Servlet的SpringMVC。
  • Spring-WebSocket:提供WebSocket功能。
  • spring-webmvc- portlet:提供portlet的支持。

4.4 数据库模块

  • spring-jdbc:提供jdbc访问数据库的支持,包含了Srping对数据库访问操作进行封装的所有类,它提供了一个JDBC的抽象层,从而实现对其他厂商的支持。
  • spring-tx:提供对事物的支持。
  • spring-orm:提供对象关系-映射的支持,使得Spring可 以方便的整合其他第三方ORM库如JAP、Mybatis、 Hibernate等。
  • spring-oxm:提供对象xml映射支持。
  • spring-jms:提供对java消息服务的支持。

4.5 Spring的下载及目录结构

Spring开发所需的jar包分为两个部分:Spring框架包和第三方依赖包。

4.5.1 Spring框架包

下载地址:https://repo.spring.io/simple/libs-release-local/org/springframework/spring/
在这里插入图片描述
在libs目录中有四个Spring的基础包,分别对应Spring核心容器的四个模块。

  • spring-core-4.3.6.RELEASE.jar
    包含Spring框架的核心工具类,Spring其 它组件都要用到这个包里的类。
  • spring-beans-4.3.6.RELEASE.jar
    所有应用都要用到的JAR包,它包含访问配置文件、创建和管理Bean以及进行控制反转或者依赖注入操作相关的所有类。
  • spring-context- 4.3.6.RELEASE.jar
    提供了在基础IoC功能上的扩展服务,还提供了许多企业级服务的支持。
  • spring-expression-4.3.6.RELEASE.jar
    定义了Spring的表达式语言。
4.5.2 第三方依赖包

在使用Spring开发时,除了要使用自带的JAR包外,Spring的 核心容器还需要依赖commons.logging的JAR包。
下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi

五、Spring的核心容器

Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制。Spring为我们提供了两种核心容器,分别为BeanFactory和ApplicationContext。

5.1 BeanFactory(不常用)

创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理,其加载配置信息的语法如下:
在这里插入图片描述

5.2 ApplicationContext

ApplicationContext是BeanFactory的子接口,是另-种常用的Spring核心容器。它由org.springframework context.ApplicationContext接口定义,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。创建ApplicationContext接 口实例,通常采用两种方法,具体如下:

5.2.1 ClassPathXmlApplicationContext

在这里插入图片描述

5.2.2 FileSystemXmlApplicationContext(不常用)

在这里插入图片描述
在Java项目中,会通过ClassPathXmlApplicationContext类来实例化
ApplicationContext容器。而在Web项目中,ApplicationContext容 器的实例化工作会交由Web服务器来完成。
Web服务器实例化ApplicationContext容器时,通常会使用ContextL oaderListener来实现,此种方式只需要在web.xml中添加如下代码:

<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
            classpath:spring/applicationContext.xml
      </param-value>
</context-param>
<listener>
      <listener-class>
            org.springframework.web.context.ContextLoaderListener
     </listener-class>
</listener>

创建Spring容器后,就可以获取Spring容器中的Bean。Spring获取 Bean的实例通常采用以下两种方法:

  • Object getBean(String name)
    根据容器中Bean的id或name来获取指定的Bean,获取之后需要进行强制类型转换。
  • < T >T getBean(Class< T > requiredType)
    根据类的类型来获取Bean的实例。由于此方法为泛型方法,因此在获取Bean之后不需要进行强制类型转换。

六、小提示

BeanFactory 和 ApplicationContext 两种容器都是通过XML文件配置和加载Bean的。二者的主要区别在于,如果Bean的一个属性没有注入,使用BeanFactory加载后,在第一-次调用getBean()方法时会抛出异常,而ApplicationContext则在初始化时自检,这样有利于检查所依赖的属性是否注入。因此,在实际开发中,通常优先使用ApplicationContext,而只有在系统资源较少时,才考虑使用BeanFactory。

七、总结

以上内容是我目前正在学习Spring做的笔记,在此过程中也有理解以及记录得不到位。如有错误之处,欢迎大家指正,随着知识的存储,以后会对内容进行补充和完善。 转载请申明原文地址,希望大家支持,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值